The Shop settings endpoint exposes the account’s public-shop content, social links, and event-directory embed URL. Checkout fields and ticket PDF display remain in its JSON contract for backwards compatibility; new integrations should use the dedicated Checkout settings API.

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": {
    "shop_url": "https://your-subdomain.usetix.io",
    "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,
    "marketing_tracking": {
      "google_analytics_id": "G-ABCDE12345",
      "google_ads_id": "AW-123456789",
      "google_ads_purchase_label": "AbCdEfGhIj",
      "meta_pixel_id": "123456789012345",
      "tiktok_pixel_id": "C1234567890ABCDE"
    },
    "event_directory_embed_url": "https://your-subdomain.usetix.io/events/embed?ref=embed",
    "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
  }
}

shop_url is the public shop base URL — the verified custom domain when one is configured, otherwise the default shop subdomain. It is the correct host for the public events feed and is read-only here. event_directory_embed_url is also read-only and can be placed in an iframe as described in Ticket and event-directory embeds.

shop_analytics_enabled and marketing_tracking remain in this response for backwards compatibility. New integrations should read and update them through the dedicated Analytics settings API.

collect_customer_phone, offer_business_invoice, offer_marketing_consent, customer_email_help_text, and show_price_on_ticket also remain for backwards compatibility. New integrations should read and update them through the dedicated Checkout settings API.

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 Compatibility field. Prefer the Analytics settings API.
google_analytics_id string Compatibility field. Prefer the Analytics settings API; send "" to clear.
google_ads_id string Compatibility field. Prefer the Analytics settings API; send "" to clear.
google_ads_purchase_label string Compatibility field. Prefer the Analytics settings API; send "" to clear.
meta_pixel_id string Compatibility field. Prefer the Analytics settings API; send "" to clear.
tiktok_pixel_id string Compatibility field. Prefer the Analytics settings API; send "" to clear.
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.

Example: enable phone collection and update the public shop tagline:

curl -X PATCH \
  -H "Authorization: Bearer your-token-here" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{"collect_customer_phone":true,"tagline":"Independent nights, unforgettable rooms."}' \
  https://app.usetix.io/admin/account_settings/shop