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

# Shopify

> Produkter, ordrer, lager, kunder og rabatter fra din Shopify-butik: plus guardrailet oprettelse og ændring af produkter, lager og publicering, direkte fra din AI.

Shopify-connectoren giver din AI adgang til din egen Shopify-butik via Shopifys
**Admin GraphQL API**: læs produkter, varianter, kollektioner, lager, ordrer,
fulfillment, kunder, B2B-virksomheder, rabatter, efterladte kurve, fragt og
analytics. Den kan derudover **oprette og ændre produkter, justere lager og
publicere til salgskanaler** bag tydelige sikkerhedsspærrer. Du angiver din egen
butiks-URL og godkender Consile-appen på Shopifys egen side, og din AI ser aldrig
selve adgangstokenet.

<Info>
  **Read + guardrailet skrivning.** Læsning er ren læsning. Nye produkter oprettes
  som **kladde (DRAFT)** som standard, og alt der går live, ændrer en pris, ændrer
  lager eller sletter, kræver din eksplicitte bekræftelse: beder du udtrykkeligt om
  status ACTIVE eller ARCHIVED, oprettes produktet direkte som live eller arkiveret
  bag samme bekræftelse. Se
  [Handlinger & guardrails](/essentials/handlinger-og-guardrails).
</Info>

<CardGroup cols={3}>
  <Card title="Adgang" icon="shield-halved">
    Read + guardrailed write
  </Card>

  <Card title="Godkendelse" icon="shopify">
    Shopify-login (OAuth) · du angiver din butiks-URL
  </Card>

  <Card title="Drift" icon="location-dot">
    Hostet i EU · Frankfurt
  </Card>
</CardGroup>

* **Pris:** 349 kr/md ekskl. moms (436,25 kr inkl. moms), opsig når som helst.
* **Flere butikker:** du kan forbinde flere Shopify-butikker som hver sin instans af connectoren. Skriv til [support@consile.dk](mailto:support@consile.dk) for at få en ekstra instans sat op.
* **Endpoint:** `https://mcp.consile.ai/shopify/mcp` (din egen, navngivne connector i Claude).

## Forudsætninger

<Steps>
  <Step title="Connector aktiveret">
    Aktivér din Shopify-connector i [portalen](https://app.consile.ai). Se
    [Tilkøb en connector](/portal/tilkoeb-connector).
  </Step>

  <Step title="Claude forbundet">
    Se [Forbind Claude](/connect/forbind-claude).
  </Step>

  <Step title="Shopify godkendt">
    Angiv din butiks-URL (`<butik>.myshopify.com`) i portalen og godkend
    Consile-appen på din butiks egen Shopify-side. Se
    [Forbind Shopify](/connect/forbind-shopify).
  </Step>
</Steps>

## Hvad kan den? (tools)

Du behøver ikke kende tool-navnene. Du spørger i naturligt sprog, og din AI vælger
og kalder selv det rigtige værktøj. Transporten navngiver hvert værktøj som
`shopify__<tool>` (fx `shopify__list_orders`); herunder vises de bare navne for
læsbarhed.

Connectoren stiller i alt **50 værktøjer** til rådighed: **40 read-only** (ren
læsning) og **10 guardrailede skrive-værktøjer**.

### Læsning (40 read-only)

**Butik & politikker**

| Tool                | Hvad den gør                                                                |
| ------------------- | --------------------------------------------------------------------------- |
| `get_shop`          | Butikkens profil: navn, domæner, valuta, tidszone, plan                     |
| `get_shop_policies` | Butikkens juridiske politikker (handels-, privatlivs-, fragt-, returvilkår) |

**Produkter & varianter**

| Tool                    | Hvad den gør                                             |
| ----------------------- | -------------------------------------------------------- |
| `list_products`         | Søg/list produkter (status, leverandør, type)            |
| `get_product`           | Ét produkt i detaljer (varianter, billeder, beskrivelse) |
| `get_product_by_handle` | Slå et produkt op via dets URL-handle                    |
| `list_product_variants` | Søg/list varianter (pris, SKU, stregkode)                |
| `get_product_variant`   | Én variant i detaljer                                    |
| `list_product_media`    | Et produkts billeder/medier                              |

**Kollektioner**

| Tool                      | Hvad den gør                                           |
| ------------------------- | ------------------------------------------------------ |
| `list_collections`        | Smarte og manuelle kollektioner                        |
| `get_collection`          | Én kollektion inkl. regelsæt (for smarte kollektioner) |
| `get_collection_products` | Produkterne i en kollektion                            |

**Salgskanaler / publicering**

| Tool                       | Hvad den gør                                  |
| -------------------------- | --------------------------------------------- |
| `list_publications`        | Butikkens salgskanaler (Online Store, POS, …) |
| `get_product_publications` | Hvilke kanaler et produkt er publiceret på    |

**Lager**

| Tool                       | Hvad den gør                                                  |
| -------------------------- | ------------------------------------------------------------- |
| `list_locations`           | Lagerlokationer (lagre/butikker)                              |
| `get_location`             | Én lokation i detaljer                                        |
| `get_inventory_item`       | Lagervare (SKU, sporing, kostpris)                            |
| `get_inventory_levels`     | Lagerbeholdning pr. lokation for en vare                      |
| `get_variant_inventory`    | En variants lager på tværs af lokationer                      |
| `list_inventory_transfers` | Lageroverførsler mellem lokationer (skema er versionsfølsomt) |
| `get_inventory_transfer`   | Én lageroverførsel i detaljer (skema er versionsfølsomt)      |
| `get_inventory_shipment`   | Én lagerforsendelse (skema er versionsfølsomt)                |

**Ordrer & fulfillment**

| Tool                      | Hvad den gør                                                   |
| ------------------------- | -------------------------------------------------------------- |
| `list_orders`             | Ordrer, nyeste først (betalings-/fulfillment-status, total)    |
| `get_order`               | Én ordre i detaljer (totaler, kunde, leveringsadresse, linjer) |
| `list_order_transactions` | Betalingstransaktioner på en ordre                             |
| `list_order_fulfillments` | En ordres forsendelser med tracking                            |
| `list_fulfillment_orders` | Fulfillment-ordrer (også 3PL)                                  |
| `get_fulfillment_order`   | Én fulfillment-ordre                                           |

**Kladdeordrer**

| Tool                | Hvad den gør                                 |
| ------------------- | -------------------------------------------- |
| `list_draft_orders` | Kladdeordrer                                 |
| `get_draft_order`   | Én kladdeordre (status, faktura-URL, linjer) |

**Kunder & virksomheder**

| Tool             | Hvad den gør                                           |
| ---------------- | ------------------------------------------------------ |
| `list_customers` | Søg/list kunder (antal ordrer, samlet forbrug)         |
| `get_customer`   | Én kunde i detaljer (kontakt, adresser, forbrug, tags) |
| `list_companies` | B2B-virksomheder                                       |
| `get_company`    | Én B2B-virksomhed (kontakter, lokationer)              |

**Rabatter**

| Tool                  | Hvad den gør                         |
| --------------------- | ------------------------------------ |
| `list_discounts`      | Automatiske og kodebaserede rabatter |
| `get_discount`        | Én rabat i detaljer                  |
| `list_code_discounts` | Kode-rabatter med selve koderne      |

**Kurve, fragt & analytics**

| Tool                       | Hvad den gør                                                 |
| -------------------------- | ------------------------------------------------------------ |
| `list_abandoned_checkouts` | Efterladte kurve (med genskabelses-URL og total)             |
| `list_delivery_profiles`   | Fragt-/leveringsprofiler                                     |
| `run_analytics_query`      | Kør en ShopifyQL-analyse (fx omsætning pr. dag)              |
| `graphql_query`            | Read-only adgang til alt andet i Admin GraphQL (kun læsning) |

<Note>
  `list_customers`, `get_customer` og ordredata kan indeholde **persondata**
  (navne, e-mail, telefon, adresser). Adgang til kunde-PII hos rigtige
  webshops kræver Shopifys **Protected Customer Data**-godkendelse af appen. Data
  hentes read-through og gemmes aldrig hos Consile.
</Note>

### Skrivning (10 guardrailede værktøjer)

Disse ti værktøjer er de eneste, der ændrer noget i din butik, og kun inden for
produkter, publicering og lager. Ordrer, kladdeordrer, kunder og rabatter er
**read-only**. Nye produkter oprettes som **kladde**, og alt der går live, ændrer
pris, ændrer lager eller sletter, kræver `confirm: true`. Uden bekræftelse får du
kun en forhåndsvisning (dry-run), og der sendes intet til Shopify.

| Tool                        | Hvad den gør                                 | Kræver bekræftelse?                               |
| --------------------------- | -------------------------------------------- | ------------------------------------------------- |
| `create_product`            | Opretter et produkt (kladde som standard)    | Kun hvis du beder om ACTIVE (live) eller ARCHIVED |
| `update_product`            | Retter et produkts felter                    | Kun hvis status → ACTIVE eller ARCHIVED           |
| `set_product_status`        | Sætter produktstatus (ACTIVE/DRAFT/ARCHIVED) | Ja for ACTIVE (live) og ARCHIVED; DRAFT er fri    |
| `create_product_variant`    | Tilføjer varianter til et produkt            | Nej                                               |
| `update_product_variant`    | Retter eksisterende varianter                | **Ja ved prisændring**, ellers fri                |
| `delete_product_variant`    | Sletter varianter                            | **Altid** (destruktivt)                           |
| `publish_product`           | Publicerer til salgskanaler (gør live)       | **Altid**                                         |
| `unpublish_product`         | Fjerner fra salgskanaler                     | **Altid**                                         |
| `set_inventory_quantity`    | Sætter et absolut lagerantal på en lokation  | **Altid** (lagerændring)                          |
| `adjust_inventory_quantity` | Justerer lager med en relativ ændring        | **Altid** (lagerændring)                          |

<Card title="Bygger du selv ovenpå? Se API-referencen" icon="code" href="/developers/tools/shopify">
  Fuld reference med alle 50 værktøjer, argumenter, GraphQL-detaljer,
  guardrail-felter og returværdier.
</Card>

## Sådan virker guardrailen

Sikkerheden er bygget ind i selve connectoren som standardindstillinger, ikke en
ubrydelig platform-spærre:

1. **Nye produkter oprettes som kladde.** Et DRAFT-produkt er ikke synligt i nogen
   salgskanal, før du udtrykkeligt publicerer eller aktiverer det.
2. **Live, pris, lager, sletning og arkivering kræver `confirm: true`.** At gøre
   noget live (publicér eller status → ACTIVE), ændre en pris, ændre lager, slette
   en variant eller arkivere kræver en eksplicit bekræftelse. Uden den får du en
   struktureret forhåndsvisning af *præcis* hvad der ville ske, og **intet** kald
   sendes til Shopify.
3. **Fejlede skrivninger ser aldrig ud som succes.** Returnerer Shopify en fejl på
   en ændring, rejses den som en fejl, ikke et tomt "ok".

I praksis betyder det, at din AI altid viser dig planen først; den anden,
bekræftede handling er den, der faktisk ændrer din butik.

<Tip>
  Læs hele bekræftelses-modellen, der gælder på tværs af alle skrive-connectors,
  under [Handlinger & guardrails](/essentials/handlinger-og-guardrails).
</Tip>

## Prøv at spørge

<AccordionGroup>
  <Accordion title="Ordrer & salg" icon="receipt">
    > *"Vis de 10 seneste ordrer og deres samlede værdi."*

    > *"Hvor mange efterladte kurve har vi den seneste uge, og hvad er den samlede værdi?"*

    > *"Vis omsætningen pr. dag de seneste 30 dage."*
  </Accordion>

  <Accordion title="Produkter & lager" icon="box">
    > *"Hvilke produkter har lavest lagerbeholdning lige nu?"*

    > *"Hvad koster vores bedst sælgende varianter, og hvad er deres SKU?"*
  </Accordion>

  <Accordion title="Opret & ændr (guardrailet)" icon="shield-halved">
    > *"Opret et nyt produkt 'Sommer-T-shirt' som kladde med en beskrivelse og pris 199 kr."*

    > *"Publicér produkt 123 til Online Store."* (du får en forhåndsvisning og skal bekræfte)

    > *"Sæt lagerantallet for SKU ABC-1 på vores hovedlager til 50."* (du bliver bedt om at bekræfte)
  </Accordion>
</AccordionGroup>

## Begrænsninger

* **Skrivning er guardrailet, ikke fri.** De ti skrive-værktøjer dækker kun
  produkter, publicering og lager, og kun bag bekræftelses-spærren ovenfor.
  Guardrailen er sikre standardindstillinger i connectoren, ikke en absolut garanti.
* **Ordrer, kunder og rabatter er read-only.** Der findes ingen værktøjer til at
  ændre ordrer, kunder eller rabatter, kun læse dem.
* **Kunde-PII kræver godkendelse.** Adgang til rigtige kunders persondata kræver
  Shopifys Protected Customer Data-godkendelse af appen.
* **Adgang fornyes automatisk, men kan udløbe.** Tokenet fornyes løbende på
  læsestien. Tilbagekalder du appen (afinstallerer den i Shopify), holder
  connectoren op med at virke og skal forbindes igen.

Virker noget ikke som forventet? Se [Fejlfinding](/troubleshooting).
