Docs
Dashboard
On this page

    Settings

    13 endpoints. Each needs an API key or OAuth token with the scope shown; the key already names its store, so paths start at /v1/store. Generated from the live contract; also in openapi.json.

    Store profile, branding, status, locale and legal details

    GET/v1/store/settings/general

    Or name the store: GET /v1/stores/{storeId}/settings/general

    settings:readrole: settings:readgetStoreGeneral

    Response StoreGeneral

    • storeStorerequired
    • logoUrlstringrequired
    • faviconUrlstringrequired
    • brandColorHexColorrequired
    • statusStorefrontStatusrequired
    • statusMessagestringrequired
    • timezoneTimeZonerequired
    • currencyDisplayCurrencyDisplayrequired
    • legalLegalDetailsrequired
    • previousHandlesobject[]required
      • handleStoreHandlerequired
      • changedAtTimestamprequired

    Example

    curl "https://api.shopfa.st/v1/store/settings/general" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/settings/general', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/settings/general",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/settings/general", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Update the store profile, brand color, storefront status, time zone, currency display or legal details

    PATCH/v1/store/settings/general

    Or name the store: PATCH /v1/stores/{storeId}/settings/general

    settings:writerole: settings:writeupdateStoreGeneral

    Body

    • namestring
    • taglinestring
    • supportEmailstring | null
    • brandColorstring
    • status"open" | "closed" | "maintenance"
    • statusMessagestring
    • timezonestring
    • currencyDisplay"symbol" | "code"
    • legalobject
      • businessNamestringrequired
      • registrationNumberstringrequired
      • vatNumberstringrequired
      • addressLine1stringrequired
      • addressLine2stringrequired
      • citystringrequired
      • postalCodestringrequired
      • regionstringrequired
      • countrystring | nullrequired

    Response StoreGeneral

    • storeStorerequired
    • logoUrlstringrequired
    • faviconUrlstringrequired
    • brandColorHexColorrequired
    • statusStorefrontStatusrequired
    • statusMessagestringrequired
    • timezoneTimeZonerequired
    • currencyDisplayCurrencyDisplayrequired
    • legalLegalDetailsrequired
    • previousHandlesobject[]required
      • handleStoreHandlerequired
      • changedAtTimestamprequired

    Example

    curl -X PATCH "https://api.shopfa.st/v1/store/settings/general" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "name": "string",
      "tagline": "string",
      "supportEmail": "[email protected]",
      "brandColor": "string",
      "status": "open",
      "statusMessage": "string",
      "timezone": "string",
      "currencyDisplay": "symbol",
      "legal": {
        "businessName": "string",
        "registrationNumber": "string",
        "vatNumber": "string",
        "addressLine1": "string",
        "addressLine2": "string",
        "city": "string",
        "postalCode": "string",
        "region": "string",
        "country": "string"
      }
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/general', {
      method: 'PATCH',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "name": "string",
        "tagline": "string",
        "supportEmail": "[email protected]",
        "brandColor": "string",
        "status": "open",
        "statusMessage": "string",
        "timezone": "string",
        "currencyDisplay": "symbol",
        "legal": {
          "businessName": "string",
          "registrationNumber": "string",
          "vatNumber": "string",
          "addressLine1": "string",
          "addressLine2": "string",
          "city": "string",
          "postalCode": "string",
          "region": "string",
          "country": "string"
        }
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PATCH",
        "https://api.shopfa.st/v1/store/settings/general",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "name": "string",
          "tagline": "string",
          "supportEmail": "[email protected]",
          "brandColor": "string",
          "status": "open",
          "statusMessage": "string",
          "timezone": "string",
          "currencyDisplay": "symbol",
          "legal": {
            "businessName": "string",
            "registrationNumber": "string",
            "vatNumber": "string",
            "addressLine1": "string",
            "addressLine2": "string",
            "city": "string",
            "postalCode": "string",
            "region": "string",
            "country": "string"
          }
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PATCH", "https://api.shopfa.st/v1/store/settings/general", strings.NewReader(`{
      "name": "string",
      "tagline": "string",
      "supportEmail": "[email protected]",
      "brandColor": "string",
      "status": "open",
      "statusMessage": "string",
      "timezone": "string",
      "currencyDisplay": "symbol",
      "legal": {
        "businessName": "string",
        "registrationNumber": "string",
        "vatNumber": "string",
        "addressLine1": "string",
        "addressLine2": "string",
        "city": "string",
        "postalCode": "string",
        "region": "string",
        "country": "string"
      }
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Is a store address free?

    GET/v1/store/settings/handle

    Or name the store: GET /v1/stores/{storeId}/settings/handle

    settings:readrole: settings:readcheckStoreHandle

    Parameters

    • handlestringqueryrequired

    Response CheckStoreHandleResponse

    • handlestringrequired
    • availablebooleanrequired
    • reasonstringrequired

    Example

    curl "https://api.shopfa.st/v1/store/settings/handle" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/settings/handle', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/settings/handle",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/settings/handle", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Change the store address; the old address keeps redirecting

    PUT/v1/store/settings/handle

    Or name the store: PUT /v1/stores/{storeId}/settings/handle

    settings:writerole: settings:writechangeStoreHandle

    Body

    • handlestringrequired

    Response StoreGeneral

    • storeStorerequired
    • logoUrlstringrequired
    • faviconUrlstringrequired
    • brandColorHexColorrequired
    • statusStorefrontStatusrequired
    • statusMessagestringrequired
    • timezoneTimeZonerequired
    • currencyDisplayCurrencyDisplayrequired
    • legalLegalDetailsrequired
    • previousHandlesobject[]required
      • handleStoreHandlerequired
      • changedAtTimestamprequired

    Example

    curl -X PUT "https://api.shopfa.st/v1/store/settings/handle" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "handle": "string"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/handle', {
      method: 'PUT',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "handle": "string"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PUT",
        "https://api.shopfa.st/v1/store/settings/handle",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "handle": "string"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/settings/handle", strings.NewReader(`{
      "handle": "string"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Use a finished image upload as the logo or favicon

    POST/v1/store/settings/assets

    Or name the store: POST /v1/stores/{storeId}/settings/assets

    settings:writerole: settings:writeuploadStoreAsset

    Body

    • kind"logo" | "favicon"required
    • uploadIdupl_…required

    Response StoreGeneral

    • storeStorerequired
    • logoUrlstringrequired
    • faviconUrlstringrequired
    • brandColorHexColorrequired
    • statusStorefrontStatusrequired
    • statusMessagestringrequired
    • timezoneTimeZonerequired
    • currencyDisplayCurrencyDisplayrequired
    • legalLegalDetailsrequired
    • previousHandlesobject[]required
      • handleStoreHandlerequired
      • changedAtTimestamprequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/settings/assets" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "kind": "logo",
      "uploadId": "upl_0123456789abcdefghjk"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/assets', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "kind": "logo",
        "uploadId": "upl_0123456789abcdefghjk"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/settings/assets",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "kind": "logo",
          "uploadId": "upl_0123456789abcdefghjk"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/settings/assets", strings.NewReader(`{
      "kind": "logo",
      "uploadId": "upl_0123456789abcdefghjk"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Remove the logo or favicon

    DELETE/v1/store/settings/assets/{kind}

    Or name the store: DELETE /v1/stores/{storeId}/settings/assets/{kind}

    settings:writerole: settings:writedeleteStoreAsset

    Parameters

    • kind"logo" | "favicon"pathrequired

    Response StoreGeneral

    • storeStorerequired
    • logoUrlstringrequired
    • faviconUrlstringrequired
    • brandColorHexColorrequired
    • statusStorefrontStatusrequired
    • statusMessagestringrequired
    • timezoneTimeZonerequired
    • currencyDisplayCurrencyDisplayrequired
    • legalLegalDetailsrequired
    • previousHandlesobject[]required
      • handleStoreHandlerequired
      • changedAtTimestamprequired

    Example

    curl -X DELETE "https://api.shopfa.st/v1/store/settings/assets/logo" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/settings/assets/logo', {
      method: 'DELETE',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "DELETE",
        "https://api.shopfa.st/v1/store/settings/assets/logo",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("DELETE", "https://api.shopfa.st/v1/store/settings/assets/logo", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Which events reach whom, the Discord and Telegram channels and recent deliveries

    GET/v1/store/settings/notifications

    Or name the store: GET /v1/stores/{storeId}/settings/notifications

    settings:readrole: settings:readgetNotificationSettings

    Response NotificationSettings

    • rulesNotificationRule[]required
    • ownerobjectrequired
      • namestringrequired
      • emailEmailrequired
    • teamRecipientsobject[]required
      • userIdUserIdrequired
      • namestringrequired
      • emailEmailrequired
      • roleNamestringrequired
      • enabledbooleanrequired
    • discordobjectrequired
      • configuredbooleanrequired
      • hintstringrequired
    • telegramobjectrequired
      • configuredbooleanrequired
      • chatIdstringrequired
      • botNamestringrequired
    • simulatedbooleanrequired
    • recentNotificationDelivery[]required

    Example

    curl "https://api.shopfa.st/v1/store/settings/notifications" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/settings/notifications', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/settings/notifications",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/settings/notifications", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Alerts and tests ShopFast sent for this store, newest first (or by alert, channel, recipient or status)

    GET/v1/store/settings/notifications/deliveries

    Or name the store: GET /v1/stores/{storeId}/settings/notifications/deliveries

    settings:readrole: settings:readlistNotificationDeliveries

    Parameters

    • qstringquery
    • channel"owner_email" | "team_email" | "discord" | "telegram" | nullquery
    • status"sent" | "simulated" | "failed" | nullquery
    • cursorstring | nullquery
    • limitinteger | stringquery
    • sort"time" | "event" | "channel" | "target" | "status"query
    • dir"asc" | "desc"query

    Response ListNotificationDeliveriesResponse

    • itemsNotificationDelivery[]required
    • nextCursorCursor | nullrequired

    Example

    curl "https://api.shopfa.st/v1/store/settings/notifications/deliveries" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/settings/notifications/deliveries', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/settings/notifications/deliveries",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/settings/notifications/deliveries", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Save the event × channel toggles and which team members get team emails

    PUT/v1/store/settings/notifications/rules

    Or name the store: PUT /v1/stores/{storeId}/settings/notifications/rules

    settings:writerole: settings:writeupdateNotificationRules

    Body

    • rulesobject[]required
      • event"order_paid" | "order_refunded" | "order_disputed" | "product_low_stock" | "product_out_of_stock" | "product_restocked" | "review_posted" | "subscription_renewed" | "subscription_cancelled" | "payout_sent" | "team_member_joined" | "checkout_blocked" | "security_alert" | "ticket_opened" | "ticket_replied" | "ticket_sla_breached" | "ticket_rated" | "discord_problem" | "payment_waiting" | "payment_review"required
      • ownerEmailbooleanrequired
      • teamEmailbooleanrequired
      • discordbooleanrequired
      • telegrambooleanrequired
    • teamRecipientsobject[]required
      • userIdstringrequired
      • enabledbooleanrequired

    Response NotificationSettings

    • rulesNotificationRule[]required
    • ownerobjectrequired
      • namestringrequired
      • emailEmailrequired
    • teamRecipientsobject[]required
      • userIdUserIdrequired
      • namestringrequired
      • emailEmailrequired
      • roleNamestringrequired
      • enabledbooleanrequired
    • discordobjectrequired
      • configuredbooleanrequired
      • hintstringrequired
    • telegramobjectrequired
      • configuredbooleanrequired
      • chatIdstringrequired
      • botNamestringrequired
    • simulatedbooleanrequired
    • recentNotificationDelivery[]required

    Example

    curl -X PUT "https://api.shopfa.st/v1/store/settings/notifications/rules" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "rules": [
        {
          "event": "order_paid",
          "ownerEmail": false,
          "teamEmail": false,
          "discord": false,
          "telegram": false
        }
      ],
      "teamRecipients": [
        {
          "userId": "string",
          "enabled": false
        }
      ]
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/notifications/rules', {
      method: 'PUT',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "rules": [
          {
            "event": "order_paid",
            "ownerEmail": false,
            "teamEmail": false,
            "discord": false,
            "telegram": false
          }
        ],
        "teamRecipients": [
          {
            "userId": "string",
            "enabled": false
          }
        ]
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PUT",
        "https://api.shopfa.st/v1/store/settings/notifications/rules",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "rules": [
            {
              "event": "order_paid",
              "ownerEmail": False,
              "teamEmail": False,
              "discord": False,
              "telegram": False
            }
          ],
          "teamRecipients": [
            {
              "userId": "string",
              "enabled": False
            }
          ]
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/settings/notifications/rules", strings.NewReader(`{
      "rules": [
        {
          "event": "order_paid",
          "ownerEmail": false,
          "teamEmail": false,
          "discord": false,
          "telegram": false
        }
      ],
      "teamRecipients": [
        {
          "userId": "string",
          "enabled": false
        }
      ]
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Connect or clear the Discord webhook or the Telegram bot (secrets are encrypted and never sent back)

    PUT/v1/store/settings/notifications/channel

    Or name the store: PUT /v1/stores/{storeId}/settings/notifications/channel

    settings:writerole: settings:writesetNotificationChannel

    Response NotificationSettings

    • rulesNotificationRule[]required
    • ownerobjectrequired
      • namestringrequired
      • emailEmailrequired
    • teamRecipientsobject[]required
      • userIdUserIdrequired
      • namestringrequired
      • emailEmailrequired
      • roleNamestringrequired
      • enabledbooleanrequired
    • discordobjectrequired
      • configuredbooleanrequired
      • hintstringrequired
    • telegramobjectrequired
      • configuredbooleanrequired
      • chatIdstringrequired
      • botNamestringrequired
    • simulatedbooleanrequired
    • recentNotificationDelivery[]required

    Example

    curl -X PUT "https://api.shopfa.st/v1/store/settings/notifications/channel" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "channel": "discord",
      "webhookUrl": "string"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/notifications/channel', {
      method: 'PUT',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "channel": "discord",
        "webhookUrl": "string"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PUT",
        "https://api.shopfa.st/v1/store/settings/notifications/channel",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "channel": "discord",
          "webhookUrl": "string"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/settings/notifications/channel", strings.NewReader(`{
      "channel": "discord",
      "webhookUrl": "string"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Send a test notification to one channel

    POST/v1/store/settings/notifications/test

    Or name the store: POST /v1/stores/{storeId}/settings/notifications/test

    settings:writerole: settings:writetestNotification

    Body

    • channel"owner_email" | "team_email" | "discord" | "telegram"required

    Response NotificationDelivery

    • idNotificationDeliveryIdrequired
    • eventNotificationEvent | nullrequired
    • channelNotificationChannelrequired
    • targetstringrequired
    • statusDeliveryStatusrequired
    • detailstringrequired
    • isTestbooleanrequired
    • createdAtTimestamprequired

    Example

    curl -X POST "https://api.shopfa.st/v1/store/settings/notifications/test" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "channel": "owner_email"
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/notifications/test', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "channel": "owner_email"
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "POST",
        "https://api.shopfa.st/v1/store/settings/notifications/test",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "channel": "owner_email"
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("POST", "https://api.shopfa.st/v1/store/settings/notifications/test", strings.NewReader(`{
      "channel": "owner_email"
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Analytics, chat and review apps, Telegram, Discord and outgoing webhooks

    GET/v1/store/settings/integrations

    Or name the store: GET /v1/stores/{storeId}/settings/integrations

    settings:readrole: settings:readgetIntegrations

    Response IntegrationsOverview

    • storefrontStorefrontIntegrationsrequired
    • telegramobjectrequired
      • configuredbooleanrequired
      • chatIdstringrequired
      • botNamestringrequired
    • discordobjectrequired
      • connectedbooleanrequired
      • guildNamestringrequired
    • webhookEndpointsinteger | nullrequired

    Example

    curl "https://api.shopfa.st/v1/store/settings/integrations" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY"
    const res = await fetch('https://api.shopfa.st/v1/store/settings/integrations', {
      method: 'GET',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
      },
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "GET",
        "https://api.shopfa.st/v1/store/settings/integrations",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("GET", "https://api.shopfa.st/v1/store/settings/integrations", nil)
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Save the storefront integration ids (each checked against a strict pattern)

    PUT/v1/store/settings/integrations

    Or name the store: PUT /v1/stores/{storeId}/settings/integrations

    settings:writerole: settings:writeupdateIntegrations

    Body

    • googleAnalyticsIdstring | nullrequired
    • metaPixelIdstring | nullrequired
    • clarityIdstring | nullrequired
    • crispWebsiteIdstring | nullrequired
    • tawkobject | nullrequired
    • consentRequiredbooleanrequired
    • trustpilotBccstring | nullrequired
    • gtmContainerIdstring | null
    • gtmOnCheckoutboolean

    Response IntegrationsOverview

    • storefrontStorefrontIntegrationsrequired
    • telegramobjectrequired
      • configuredbooleanrequired
      • chatIdstringrequired
      • botNamestringrequired
    • discordobjectrequired
      • connectedbooleanrequired
      • guildNamestringrequired
    • webhookEndpointsinteger | nullrequired

    Example

    curl -X PUT "https://api.shopfa.st/v1/store/settings/integrations" \
      -H "Authorization: Bearer $SHOPFAST_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
      "googleAnalyticsId": "string",
      "metaPixelId": "string",
      "clarityId": "string",
      "crispWebsiteId": "string",
      "tawk": {
        "propertyId": "string",
        "widgetId": "string"
      },
      "consentRequired": false,
      "trustpilotBcc": "[email protected]",
      "gtmContainerId": null,
      "gtmOnCheckout": false
    }'
    const res = await fetch('https://api.shopfa.st/v1/store/settings/integrations', {
      method: 'PUT',
      headers: {
        Authorization: `Bearer ${process.env.SHOPFAST_API_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        "googleAnalyticsId": "string",
        "metaPixelId": "string",
        "clarityId": "string",
        "crispWebsiteId": "string",
        "tawk": {
          "propertyId": "string",
          "widgetId": "string"
        },
        "consentRequired": false,
        "trustpilotBcc": "[email protected]",
        "gtmContainerId": null,
        "gtmOnCheckout": false
      }),
    });
    if (!res.ok) throw new Error((await res.json()).detail);
    const data = await res.json();
    import os, requests
    
    res = requests.request(
        "PUT",
        "https://api.shopfa.st/v1/store/settings/integrations",
        headers={"Authorization": f"Bearer {os.environ['SHOPFAST_API_KEY']}"},
        json={
          "googleAnalyticsId": "string",
          "metaPixelId": "string",
          "clarityId": "string",
          "crispWebsiteId": "string",
          "tawk": {
            "propertyId": "string",
            "widgetId": "string"
          },
          "consentRequired": False,
          "trustpilotBcc": "[email protected]",
          "gtmContainerId": None,
          "gtmOnCheckout": False
        },
    )
    res.raise_for_status()
    data = res.json()
    req, _ := http.NewRequest("PUT", "https://api.shopfa.st/v1/store/settings/integrations", strings.NewReader(`{
      "googleAnalyticsId": "string",
      "metaPixelId": "string",
      "clarityId": "string",
      "crispWebsiteId": "string",
      "tawk": {
        "propertyId": "string",
        "widgetId": "string"
      },
      "consentRequired": false,
      "trustpilotBcc": "[email protected]",
      "gtmContainerId": null,
      "gtmOnCheckout": false
    }`))
    req.Header.Set("Authorization", "Bearer "+os.Getenv("SHOPFAST_API_KEY"))
    req.Header.Set("Content-Type", "application/json")
    res, err := http.DefaultClient.Do(req)
    Try it with your key

    Use a test key on a development store. The key stays in this tab (sessionStorage) and is sent only to the base URL above.

    Was this page helpful?