The Shop settings endpoint exposes the account’s public-shop content, checkout options, ticket PDF display, social links, and analytics collection switches.

Reading requires a token with Read or Read + Write permission. Updating requires Read + Write. See Authentication.

GET /admin/account_settings/shop

curl \
  -H "Authorization: Bearer your-token-here" \
  -H "Accept: application/json" \
  https://app.usetix.io/admin/account_settings/shop

Response:

{
  "data": {
    "tagline": "Independent nights, unforgettable rooms.",
    "about_html": "<p>We host concerts across Berlin.</p>",
    "collect_customer_phone": true,
    "offer_business_invoice": true,
    "offer_marketing_consent": true,
    "show_price_on_ticket": true,
    "shop_analytics_enabled": true,
    "customer_email_help_text": "We send tickets and event updates here.",
    "social_proof_stats": [
      { "value": "12,000+", "label": "Guests" },
      { "value": "48", "label": "Events" }
    ],
    "social_links": {
      "instagram_url": "https://instagram.com/example",
      "tiktok_url": null,
      "youtube_url": null,
      "spotify_url": null,
      "soundcloud_url": null,
      "whatsapp_url": null,
      "website_url": "https://example.com"
    },
    "gallery_image_count": 6
  }
}

about_html is the rendered rich-text value. show_price_on_ticket defaults to true; when it is false, newly generated ticket PDFs omit the paid price. Checkout prices, order totals, and invoices are unchanged. gallery_image_count is read-only on this endpoint; manage shop images from the admin dashboard.

PATCH /admin/account_settings/shop

Send only the fields you want to change, directly at the JSON top level. This example hides the paid price on downloaded ticket PDFs:

curl -X PATCH \
  -H "Authorization: Bearer your-token-here" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"show_price_on_ticket": false}' \
  https://app.usetix.io/admin/account_settings/shop

Writable fields:

Field Type Notes
tagline string Public shop tagline. Maximum 200 characters. Send "" to clear.
about string Rich-text shop description. Returned as about_html. Send "" to clear.
collect_customer_phone boolean Whether checkout asks for a phone number.
offer_business_invoice boolean Whether checkout offers business-invoice fields.
offer_marketing_consent boolean Whether checkout offers email-marketing consent.
show_price_on_ticket boolean Whether generated ticket PDFs show the paid price. Defaults to true.
shop_analytics_enabled boolean false pauses future collection while retaining historical reports.
customer_email_help_text string Help text below the required checkout email field. Maximum 200 characters; send "" to clear.
social_proof_stats array Full replacement list of up to 3 { "value", "label" } objects. Send [] to clear.
instagram_url string Absolute http or https URL; send "" to clear.
tiktok_url string Absolute http or https URL; send "" to clear.
youtube_url string Absolute http or https URL; send "" to clear.
spotify_url string Absolute http or https URL; send "" to clear.
soundcloud_url string Absolute http or https URL; send "" to clear.
whatsapp_url string Absolute http or https URL; send "" to clear.
website_url string Absolute http or https URL; send "" to clear.

Response: 200 OK with the complete updated data object in the same shape as GET.

Validation failures return 422 Unprocessable Entity:

{
  "errors": {
    "tagline": ["is too long (maximum is 200 characters)"]
  }
}

A Read token attempting PATCH receives 401 Unauthorized and no settings are changed.