Browse API docs

Shop settings

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. The shop’s theme, accent color and fonts live in the Shop look 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,
    "require_billing_address": false,
    "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.
require_billing_address boolean Defaults to false. When enabled, every buyer must enter street, postal code, city and country at checkout. Address fields are always visible, the invoice toggle is hidden, and an invoice is issued even for free orders. Company and VAT ID remain optional. Takes precedence over offer_business_invoice; existing orders are unchanged.
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

Shared shop URLs use the existing shop logo, falling back to the shop banner and then the Usetix logo. Event URLs use the event flyer first, followed by those same fallbacks. Preview metadata is generated automatically from existing artwork; there is no additional API field or upload. Sharing services may retain an earlier preview until their cache refreshes.