diff --git a/public/search-index.json b/public/search-index.json index c0b5a4c..648c425 100644 --- a/public/search-index.json +++ b/public/search-index.json @@ -1,368 +1,398 @@ [ { - "id": "/api/01-public-api-introduction", + "id": "/api/public-api-introduction", "title": "Showpass Discovery API", - "path": "/api/01-public-api-introduction", + "path": "/api/public-api-introduction", "content": "Returns public Showpass experiences for calendars, search pages, featured lists, and event cards. Each result includes a slug for linking to the experience or fetching its details.\n---\n``text\nhttps://www.showpass.com/api/public/discovery/\n`\n---\nNo API token is required. Browser requests must come from a domain allowlisted in Showpass.\nDashboard settings URL:\n`text\nhttps://www.showpass.com/dashboard/venues/edit/\n`\n---\nAll API responses are returned in JSON format.\n---\nStart with these filters for most listings:\n| Parameter | Example | Purpose |\n| ----------------------------------- | ------------------------------------------ | ---------------------------------------- |\n| search_string | &search_string=concert | Filter by experience name, venue, tags |\n| point_location | &point_location=51.0276233,-114.087835,15 | Filter by latitude, longitude, and radius in km |\n| tags | &tags=featured | Show only experiences with specific tags |\n| starts_on__gte | &starts_on__gte=2025-01-01T00:00:00 | Experiences starting after a date |\n| ends_on__lt | &ends_on__lt=2025-02-01T00:00:00 | Experiences ending before a date |\n| venue__in | &venue__in=123,456 | Filter by specific venue IDs |\n---\nThese fields from the results array are the most commonly used:\n| Field | Description | Usage |\n| -------------------------- | ---------------------------- | -------------------------------------------- |\n| slug | Unique experience identifier | Link to, fetch, or route to the experience |\n| name | Experience name | Display the experience " }, { - "id": "/api/02-public-api-event-list-by-organization", + "id": "/api/public-api-event-list-by-organization", "title": "List experiences by organization", - "path": "/api/02-public-api-event-list-by-organization", + "path": "/api/public-api-event-list-by-organization", "content": "Returns public experiences for one or more Showpass organizations. Supports venue calendars, organizer pages, and partner listings.\n---\nSingle organization:\n``text\nhttps://www.showpass.com/api/public/discovery/?venue=ORGANIZATION_ID\n`\nMultiple organizations:\n`text\nhttps://www.showpass.com/api/public/discovery/?venue__in=ORGANIZATION_ID1,ORGANIZATION_ID2\n`\nReplace ORGANIZATION_ID with your numerical organization ID.\n---\n1. Log in to your Showpass account\n2. Open your venue settings: https://www.showpass.com/dashboard/venues/edit/\n3. Your Organization ID is displayed in the top right corner\n---\nSingle organization:\n`text\nhttps://www.showpass.com/api/public/discovery/?venue=123\n`\nMultiple organizations:\n`text\nhttps://www.showpass.com/api/public/discovery/?venue__in=123,456,789\n`\nUpcoming events only:\n`text\nhttps://www.showpass.com/api/public/discovery/?venue=123&starts_on__gte=2025-01-01T00:00:00\n`\nHomepage list (next 5 upcoming events):\n`text\nhttps://www.showpass.com/api/public/discovery/?venue=123&starts_on__gte=2025-01-01T00:00:00&ordering=starts_on&page_size=5\n`\n---\nYou can combine venue or venue__in with the same filters used by the Discovery API:\n- Date filters: starts_on__gte, starts_on__lte, ends_on__gte, ends_on__lt\n- Search: search_string\n- Categories & tags: categories, tags\n- Filtering: is_sponsored, showpass_gift_card\n- Pagination: page_size, page\n- Ordering: ordering\n---\n- Domain whitelisting required: Add your domain in the \"Integrations\" tab of your venue edit page\n- Parent experiences only by default: Add only_parents=false` to include recurring event instances\n- Default pagination: 20 results per page" }, { - "id": "/api/03-public-api-query-specific-event", + "id": "/api/public-api-query-specific-event", "title": "Query a specific experience by slug", - "path": "/api/03-public-api-query-specific-event", + "path": "/api/public-api-query-specific-event", "content": "Returns full public details for one Showpass experience. The response includes:\n- Experience name, description, dates, and location\n- Venue details\n- Ticket types and pricing\n- Availability and inventory\n- Custom fields and requirements\n- Related events\n---\n``text\nhttps://www.showpass.com/api/public/events/{SLUG}/\n`\nReplace {SLUG} with the experience slug or ID.\n---\nThe slug is the URL-friendly identifier for an experience. You can find it in several ways:\n1. From the Showpass URL: For example, in https://www.showpass.com/summer-concert-2025/, the slug is summer-concert-2025\n2. From the Discovery API: The slug field in the Discovery API response\n3. From the Dashboard: In your event management dashboard\n---\n`text\nhttps://www.showpass.com/api/public/events/summer-concert-2025/\n`\nThis returns complete details for the experience with slug summer-concert-2025.\n---\n| Parameter | Type | Status | Description |\n| --------- | ----------------- | -------- | ------------------------------------------------ |\n| slug | String or integer | Required | The experience slug or ID, passed in the URL path |\n---\nFetch full experience details to display on your website:\n`text\nhttps://www.showpass.com/api/public/events/my-experience-slug/\n`\nUse the response to show:\n- Experience name, dates, and description\n- Venue information and location\n- Available ticket types and prices\n- Images and media\nCheck if an experience is sold out or has limited inventory:\n`text\nhttps://www.showpass.com/api/public/events/my-experience-slug/\n`\nCheck the sold_out field and ticket_types[].inventory_left in the response.\n---\nReturned when the slug doesn't exist:\n`javascript\n{\n \"detail\": \"Not found.\"\n}\n`\nCommon causes:\n- Incorrect slug\n- Experience has been deleted\n- Typo in the URL\n---\n| Feature | Detail Endpoint (/events/{slug}/) | Discovery Endpoint (/discovery/`) |\n|---------|--------------------------------------|-------------------------------------|\n| " }, { - "id": "/api/10-private-api-overview", + "id": "/api/private-api-overview", "title": "Showpass Private Organizer API", - "path": "/api/10-private-api-overview", + "path": "/api/private-api-overview", "content": "The Showpass Private Organizer API provides authenticated access to various functionality for event organizers, with a focus on ticket management and verification.\nThis private API allows organizers to perform various operations related to event management. Unlike the public API, this API requires authentication with a Showpass token and provides access to sensitive data and operations that are specific to event organizers.\nThe API is continuously evolving to provide more capabilities to event organizers, including ticket verification, scanning operations, tracking links, discounts, and access passwords.\nThe Private Organizer API requires authentication using a Showpass token:\n``\nAuthorization: Token YOUR_API_TOKEN\n``\nYou must include this token in the header of all requests to the private API endpoints. Contact Showpass support to obtain your organization's API token.\nThe Private Organizer API provides a growing set of endpoints for event organizers to manage their events and tickets. Current documented areas include ticket verification, ticket scan actions, tracking links, discounts, and passwords for event or ticket type access control.\nThe API is designed to be extensible, allowing for new features and capabilities to be added over time to meet the evolving needs of event organizers.\nTo get started with the Private Organizer API:\n1. Obtain an API token from Showpass support\n2. Review the available endpoints documentation to understand the capabilities\n3. Implement the API endpoints that meet your specific needs\nCurrently, the API documentation includes details on ticket verification, scanning operations, tracking links, discounts, and passwords, with more endpoints to be documented as they become available.\nThe following sections provide detailed documentation for the available endpoints." }, { - "id": "/api/11-private-api-scan-ticket-by-code", + "id": "/api/private-api-scan-ticket-by-code", "title": "Ticket Verification", - "path": "/api/11-private-api-scan-ticket-by-code", + "path": "/api/private-api-scan-ticket-by-code", "content": "Ticket verification is the first step in the ticket scanning process. Before you can scan, void, or return a ticket, you need to verify it by looking up its details using the barcode or code.\nThe ticket verification endpoint allows you to look up a ticket by its barcode or code. This is an essential first step because:\n1. It confirms that the ticket exists and is valid\n2. It provides the ticket item ID needed for subsequent operations\n3. It returns the current status of the ticket (e.g., \"payed\", \"used\", \"voided\")\n4. It provides information about the ticket type, including whether it supports multiple scans\nAfter verifying a ticket, you can proceed to perform actions like scanning (pickup), voiding, or returning the ticket using the Ticket Scan Actions endpoint.\nThis endpoint requires authentication using a Showpass token:\n``\nAuthorization: Token YOUR_API_TOKEN\n`\nThe ticket verification endpoint allows you to look up a ticket by its barcode or code.\nThis endpoint supports both GET and POST methods:\n`\nGET https://www.showpass.com/api/venue/{venue_id}/tickets/items/scan/?code={code}\nPOST https://www.showpass.com/api/venue/{venue_id}/tickets/items/scan/\n`\n| Parameter | Type | Status | Description |\n| ---------- | ------- | -------- | --------------------------------------------- |\n| venue_id | Integer | Required | The ID of your venue |\n| Parameter | Type | Status | Description |\n| ------------------ | ------ | -------- | --------------------------------------------------------------------------- |\n| code | String | Required | The barcode or code of the ticket to look up |\n| permittedTypeIDs | String | Optional | Comma-separated list of ticket type IDs that are allowed to be scanned. If provided, only tickets matching these types will be returned. |\nNote: When using POST, you need to sen" }, { - "id": "/api/12-private-api-ticket-scan-actions", + "id": "/api/private-api-ticket-scan-actions", "title": "Ticket Scan Actions", - "path": "/api/12-private-api-ticket-scan-actions", + "path": "/api/private-api-ticket-scan-actions", "content": "After verifying a ticket using the ticket verification endpoint, you can perform various actions on the ticket by creating a scan history record. This document covers the three main ticket actions:\n1. Pickup - Mark a ticket as used (scan for entry)\n2. Return - Undo a previous scan (return to usable state)\n3. Void - Invalidate a ticket (make it unusable)\nAll these actions use the same endpoint but with different action parameters.\n``\nPOST https://www.showpass.com/api/venue/{venue_id}/tickets/items/histories/\n`\nThis endpoint requires authentication using a DRF token:\n`\nAuthorization: Token YOUR_API_TOKEN\n`\nThe typical workflow for ticket scanning is:\n1. Verify the ticket using the verification endpoint\n2. Extract the ticket item ID from the verification response\n3. Create a scan history record with the appropriate action\nThe \"pickup\" action marks a ticket as used, changing its status from \"payed\" to \"used\". This is the standard action for scanning a ticket for entry.\n| Parameter | Type | Status | Description |\n| ---------------- | ------- |----------| ---------------------------------------------------------- |\n| item | Integer | Required | The ticket item ID (obtained from verification endpoint) |\n| action | String | Required | Must be \"pickup\" for scanning a ticket |\n| scanner_device | String | Required | The device used for scanning (e.g., \"web_app\") |\n| barcode_string | String | Required | The barcode value of the ticket |\n| barcode_type | String | Optional | The type of barcode (e.g., \"static\") |\n- A ticket can only be scanned once unless it has a multiscan_limit greater than 1\n- If a ticket has already been scanned, the API will return an error\n- You can undo a scan using the \"return\" action\nThe \"return\" action undoes a previous scan, changing a ticket's status from \"used\" back to \"payed\". This is usef" }, { - "id": "/api/20-private-api-tracking-links", + "id": "/api/private-api-tracking-links", "title": "Tracking Links", - "path": "/api/20-private-api-tracking-links", + "path": "/api/private-api-tracking-links", "content": "Tracking links allow organizers to create shareable URLs that attribute ticket sales to specific employees, venues, or affiliates. Each link generates a unique short URL (e.g., https://showpass.com/l/abc12345) that redirects to your event page while recording views, unique visitors, and conversion data.\n---\nThis endpoint requires authentication using a Showpass token:\n``\nAuthorization: Token YOUR_API_TOKEN\n`\n---\nThe base URL for all tracking link endpoints is:\n`text\nhttps://www.showpass.com/api/venue/{venue_id}/analytics/tracking/links/\n`\n| Method | Path | Description |\n| -------- | -------------------- | ------------------------------- |\n| GET | /links/ | List all tracking links |\n| POST | /links/ | Create a new tracking link |\n| GET | /links/{id}/ | Retrieve a single tracking link |\n| PUT | /links/{id}/ | Update a tracking link |\n| DELETE | /links/{id}/ | Delete a tracking link |\n| GET | /links/me/ | List my tracking links |\n| Parameter | Type | Status | Description |\n| ---------- | ------- | -------- | ---------------------------------------------- |\n| venue_id | Integer | Required | The ID of your venue |\n| id | Integer | Required | The tracking link ID (detail, update, or delete) |\n---\n| Value | Name | Description |\n| ----- | -------------- | -------------------------------------------------------------- |\n| 1 | Employee | Links shared by staff members for sales attribution |\n| 2 | Venue | Links created at the venue / organization level |\n| 3 | Affiliate | Links for external partners and promoters |\n| 4 | Quick Purchase | Pre-configured checkout links with items already in the basket |\n> Note: The API only returns user" }, { - "id": "/api/21-private-api-discounts", + "id": "/api/private-api-discounts", "title": "Discounts", - "path": "/api/21-private-api-discounts", + "path": "/api/private-api-discounts", "content": "Discounts allow organizers to create checkout codes that reduce the price of eligible orders or items. A discount can be configured as a percentage or fixed amount, with optional usage limits, active dates, checkout availability, and restrictions for specific events, ticket types, products, or memberships.\nMost integrations use this API to issue customer-entered discount codes for promotions, customer-specific offers, or fixed-amount credits.\n---\nThis endpoint requires authentication using a Showpass token:\n``text\nAuthorization: Token YOUR_API_TOKEN\n`\n---\nThe base URL for all discount endpoints is:\n`text\nhttps://www.showpass.com/api/venue/{venue_id}/financials/discounts/\n`\n| Method | Path | Description |\n| -------- | ------------------ | ----------------------------------- |\n| GET | /discounts/ | List discounts for the venue |\n| POST | /discounts/ | Create a discount |\n| GET | /discounts/{id}/ | Retrieve a single discount |\n| PUT | /discounts/{id}/ | Update a discount |\n| DELETE | /discounts/{id}/ | Deactivate a discount by soft delete |\n| Parameter | Type | Status | Description |\n| ---------- | ------- | -------- | ----------------------------------------------------- |\n| venue_id | Integer | Required | The ID of the venue that owns the discount |\n| id | Integer | Required | The discount ID for retrieve, update, and delete calls |\n---\n| Value | Name | Recommended Use |\n| ----- | ---------------- | ------------------------------------------------------------------------ |\n| 1 | Discount Code | Standard customer-entered discount code. This is the primary documented workflow for this endpoint. |\n| 8 | Auto Discount | Automatically applied discount. Requires discount_rules and venue eligibility. Use only when buildin" }, { - "id": "/api/22-private-api-passwords", + "id": "/api/private-api-passwords", "title": "Passwords", - "path": "/api/22-private-api-passwords", - "content": "Passwords are an access-control layer for event and ticket type inventory. They let your system create unique Showpass codes and send them to the customers who should receive access. Common use cases include controlled presales, approved complimentary access, private allocations, and eligibility-based ticket claims.\n---\nThis endpoint requires authentication using a Showpass token:\n``text\nAuthorization: Token YOUR_API_TOKEN\n`\n---\nThe base URL for all password endpoints is:\n`text\nhttps://www.showpass.com/api/venue/{venue_id}/passwords/\n`\n| Method | Path | Description |\n| -------- | ------------------- | ----------------------------------- |\n| GET | /passwords/ | List passwords for the venue |\n| POST | /passwords/ | Create a password |\n| GET | /passwords/{id}/ | Retrieve a single password |\n| PUT | /passwords/{id}/ | Update a password |\n| DELETE | /passwords/{id}/ | Delete or deactivate a password binding |\n| Parameter | Type | Status | Description |\n| ---------- | ------- | -------- | ----------------------------------------------------- |\n| venue_id | Integer | Required | The ID of the venue that owns the password |\n| id | Integer | Required | The password ID for retrieve, update, and delete calls |\n---\nEach password record is created for one of three scopes.\n| Scope | Use When | Key Fields |\n| ----- | -------- | ---------- |\n| Ticket type password | A code should unlock one configured ticket type without gating the whole event | ticket_type |\n| Event password | A code should unlock the whole event | event_id |\n| Event password with selected ticket types | A code should unlock selected ticket types within an event | event_id, ticket_type_ids |\n> Choosing a scope: Use ticket_type when the code unlocks one configured ticket type. Use event_id with ticket_type_ids when the code should reve" + "path": "/api/private-api-passwords", + "content": "Passwords are an access-control layer for event and ticket type inventory. They let your system create unique Showpass codes and send them to the customers who should receive access. Common use cases include controlled presales, approved complimentary access, private allocations, and eligibility-based ticket claims. Codes can stay reusable or be capped to a fixed ticket quantity for one-ticket or limited-ticket claims.\n---\nThis endpoint requires authentication using a Showpass token:\n``text\nAuthorization: Token YOUR_API_TOKEN\n`\n---\nThe base URL for all password endpoints is:\n`text\nhttps://www.showpass.com/api/venue/{venue_id}/passwords/\n`\n| Method | Path | Description |\n| -------- | ------------------- | ----------------------------------- |\n| GET | /passwords/ | List passwords for the venue |\n| POST | /passwords/ | Create a password |\n| GET | /passwords/{id}/ | Retrieve a single password |\n| PUT | /passwords/{id}/ | Update a password |\n| DELETE | /passwords/{id}/ | Delete or deactivate a password binding |\n| Parameter | Type | Status | Description |\n| ---------- | ------- | -------- | ----------------------------------------------------- |\n| venue_id | Integer | Required | The ID of the venue that owns the password |\n| id | Integer | Required | The password ID for retrieve, update, and delete calls |\n---\nEach password record is created for one of three scopes.\n| Scope | Use When | Key Fields |\n| ----- | -------- | ---------- |\n| Ticket type password | A code should unlock one configured ticket type without gating the whole event | ticket_type |\n| Event password | A code should unlock the whole event | event_id |\n| Event password with selected ticket types | A code should unlock selected ticket types within an event | event_id, ticket_type_ids |\n> Choosing a scope: Use ticket_type when" }, { - "id": "/cli/01-overview", + "id": "/api/partner-api-customer-attribution-token", + "title": "Create a customer attribution token", + "path": "/api/partner-api-customer-attribution-token", + "content": "Issue a short-lived customer attribution token for an existing partner user.\n``http\nPOST /api/partner/customer-attribution-token/\n`\nThe request must be authenticated with the Partner API HMAC scheme described in\nthe Partner API overview.\n`json\n{\n \"partner_user_id\": \"customer-42\"\n}\n`\nThe identity must already exist for the authenticated partner. The endpoint\nreturns 201:\n`json\n{\n \"customer_attribution_token\": \"opaque-token\",\n \"customer_attribution_token_expires_in_seconds\": 3600\n}\n`\nThe token is valid for one hour. Pass it as customer_attribution_token when\ncreating a supported Showpass checkout basket. This lets Showpass associate the\nresulting order with the partner customer.\nThe raw token is returned only in this response. Showpass stores a hash of the\ntoken, so treat the raw value as a secret and do not log it.\nThe request returns 403 when customer attribution is not available for the\npartner or venue. It returns 409 when the partner user does not exist or is\ninactive. Validation errors return 400 and authentication failures return\n403`." + }, + { + "id": "/api/partner-api-order-manage-link", + "title": "Create an order-management link", + "path": "/api/partner-api-order-manage-link", + "content": "Create a short-lived order-management handoff link for an attributed order.\n``http\nPOST /api/partner/orders/manage-link/\n`\nThe request must be authenticated with the Partner API HMAC scheme described in\nthe Partner API overview.\n`json\n{\n \"partner_user_id\": \"customer-42\",\n \"transaction_id\": \"transaction-id\"\n}\n`\nThe transaction must belong to the partner user and satisfy the partner’s venue\nscope. The endpoint returns 201:\n`json\n{\n \"manage_url\": \"https://www.showpass.com/account/partner-login/opaque-code/\",\n \"expires_in_seconds\": 120\n}\n`\nThe link expires after 120 seconds. It can be used once. The code is stored as\na hash and cannot be reused after it is consumed or expires.\nThe manage_url is a browser handoff route:\n`http\nGET /account/partner-login//\n`\nWhen the code is valid, Showpass consumes it, creates a short-lived\norder-scoped session, and redirects the customer to the order page. The route\ndoes not return the order data directly.\nAn invalid, expired, already-used, or out-of-scope link redirects the customer\nto the Showpass login page:\n`text\n/accounts/login/?next=/account/my-orders/\n`\nThe request returns 403 when the order is outside the partner’s venue scope,\nand 409 when the partner user or order cannot be found or the partner user is\ninactive. Validation errors return 400 and authentication failures return\n403`." + }, + { + "id": "/api/partner-api-overview", + "title": "Partner API overview", + "path": "/api/partner-api-overview", + "content": "The Partner API is for server-to-server integrations between Showpass and a\ntrusted partner application. It lets a partner:\n- Create or reuse a Showpass customer identity.\n- Generate a short-lived customer attribution token.\n- Create a short-lived order-management link for a customer’s order.\n- Receive partner customer information in supported webhook events.\nUse this API when your backend needs to connect customers and orders in your\nsystem with Showpass. Keep the partner secret on your server. Do not expose it\nin browser code or mobile applications.\nThe API base URL is:\n``text\nhttps://www.showpass.com/api/partner/\n`\nPartner credentials are provided by Showpass during Partner onboarding. Contact\nyour CSM to receive your Key ID and Secret. Store the Secret securely on your\nserver and never commit or expose it in client-side code.\nPartner requests use HMAC authentication. Send these headers on every request:\n| Header | Description |\n| --- | --- |\n| X-Showpass-Partner-Key-Id | Partner credential key ID. |\n| X-Showpass-Partner-Timestamp | Unix timestamp in seconds. Requests older than five minutes or too far in the future are rejected. |\n| X-Showpass-Partner-Nonce | A unique value for this request. A nonce cannot be reused. |\n| X-Showpass-Partner-Signature | sha256= followed by the HMAC-SHA256 digest. |\nCalculate the signature with the partner secret over this newline-separated\ncanonical value:\n`text\nv1\nTIMESTAMP\nNONCE\nHTTP_METHOD\nPATH_AND_QUERY\nSHA256_OF_RAW_REQUEST_BODY\n`\nThe value in X-Showpass-Partner-Signature is sha256= followed by the\nlowercase hexadecimal HMAC-SHA256 digest. Sign the exact path and query string\nsent to Showpass. For an empty request body, hash the empty byte string.\nFor example, this Python code creates the signature for a POST request. The\nbody value must be exactly the same bytes sent in the request:\n`python\nimport hashlib\nimport hmac\nimport time\nimport uuid\npartner_secret = \"your-partner-secret\"\nbody = '{\"partner_user_id\":\"customer-42\"}'\ntim" + }, + { + "id": "/api/partner-api-users", + "title": "Create or reuse a partner user", + "path": "/api/partner-api-users", + "content": "Create or reuse a partner user identity for the authenticated partner.\n``http\nPOST /api/partner/users/\n`\nThe request must be authenticated with the Partner API HMAC scheme described in\nthe Partner API overview. The examples in the\nAPI reference panel sign the exact raw request body sent to Showpass.\n| Field | Type | Required | Description |\n| --- | --- | --- | --- |\n| partner_user_id | string | Yes | Stable partner-side user ID, up to 255 characters. It is trimmed and lowercased. |\n| email | string | Yes | Partner user email address, up to 128 characters. |\n| email_verified | boolean | Yes | Whether the partner has verified the email. If true, Showpass may link the request to an existing Showpass user with the same email. |\n| first_name | string | No | First name, up to 32 characters. |\n| last_name | string or null | No | Last name, up to 32 characters. |\n| phone | string or null | No | Phone number, up to 32 characters. |\n| venue_id | integer or null | No | Venue for this request. It must match the partner’s allowed venue when one is configured. |\nThe endpoint returns 201 when it creates a new identity and 200 when it\nreuses an existing identity.\n`json\n{\n \"partner_identity_id\": 123,\n \"partner_user_id\": \"customer-42\",\n \"status\": \"active\",\n \"link_reason\": \"created_user\",\n \"venue_id\": 456\n}\n`\nFor supported venues, the response can also include\ncustomer_attribution_token and\ncustomer_attribution_token_expires_in_seconds.\nThe link_reason value is one of:\n- created_user: a new Showpass user was created.\n- reused_existing: the partner identity already existed.\n- email_auto_linked: the request was linked to an existing Showpass user after the partner confirmed the email.\nError responses use the following status codes:\n- 400 Bad Request: the request body is missing a required field or contains\n an invalid field value or type.\n- 403 Forbidden: the Partner credentials are missing or invalid, or the\n requested venue_id is outside the partner's allowed venue scope.\n- 409" + }, + { + "id": "/api/partner-api-webhooks", + "title": "Partner attribution in webhooks", + "path": "/api/partner-api-webhooks", + "content": "Partner attribution adds two optional fields to an existing Showpass webhook:\n``json\n{\n \"partner_slug\": \"partner-name\",\n \"partner_user_id\": \"customer-42\"\n}\n`\nThis helps your partner application match a purchase, refund, void, or transfer\nto the customer in its own system.\nPartner attribution can be included on these existing webhook events:\n- invoice.purchase: a completed purchase.\n- invoice.refund: a refund.\n- invoice.void: a voided transaction.\n- invoice.transfer: the recipient-side invoice and ticket records created by\n a ticket transfer.\n- invoice.transferred`: the original purchaser’s invoice and ticket records\n updated by a ticket transfer.\nThis is not a new webhook or a new webhook URL. You use the same webhook setup,\nevents, signatures, and delivery process described in the Webhooks\nintroduction.\nFor supported Partner integrations, Showpass adds the fields when it finds one\nclear partner customer match. If there is no match or more than one possible\nmatch, Showpass sends the normal webhook payload without these fields. The\nwebhook is still delivered.\nFor the supported event list and signature verification, see webhook event\ntypes and webhook\nsecurity." + }, + { + "id": "/cli/overview", "title": "Showpass CLI", - "path": "/cli/01-overview", - "content": "Build and manage event websites that connect directly to your Showpass venue.\n``bash\ncurl -fsSL \"https://www.showpass.com/install.sh\" | bash\n`\n`bash\nshowpass init my-event-site\n`\nThis launches an interactive wizard that:\n- Signs you in to your Showpass account\n- Connects to your venue\n- Generates a React + TypeScript site with Showpass SDK pre-configured\n- Installs dependencies and starts the dev server\nYour site will be running at http://localhost:8080`.\n| | |\n|---|---|\n| OS | macOS, Linux |\n| Account | Showpass account with venue access |" + "path": "/cli/overview", + "content": "Build and manage event websites that connect directly to your Showpass venue.\nInstall the versioned CLI release and its project templates on macOS or Linux:\n``bash\nbrew install showpass/tap/showpass\n`\nHomebrew verifies the release checksum and keeps the CLI upgradeable with\nbrew upgrade showpass.\nInstall the CLI and its project templates from the public release flake:\n`bash\nnix profile install github:showpass/cli-releases#showpass\n`\nInstall the native package matching the machine's architecture:\n`bash\narch=\"$(dpkg --print-architecture)\"\ncurl -fLO \"https://github.com/showpass/cli-releases/releases/download/linux-v2.1.0-r1/showpass_2.1.0-1_${arch}.deb\"\nsudo apt install \"./showpass_2.1.0-1_${arch}.deb\"\n`\nThe release supports the amd64 and arm64 Debian architectures.\nDNF can install the native package directly from the immutable release:\n`bash\narch=\"$(rpm --eval '%{_arch}')\"\nsudo dnf install \"https://github.com/showpass/cli-releases/releases/download/linux-v2.1.0-r1/showpass-2.1.0-1.${arch}.rpm\"\n`\nThe release supports the x86_64 and aarch64 RPM architectures. Package\nchecksums are available with the\nnative Linux release.\n`bash\ncurl -fsSL \"https://www.showpass.com/install.sh\" | bash\n`\nThe currently published packages support macOS and Linux on Intel/AMD and\nARM64 systems. Verify the installation with:\n`bash\nshowpass --version\n`\nIf showpass is not found after installation, add the local binary directory\nto your shell configuration.\nFor Bash (~/.bashrc) or Zsh (~/.zshrc):\n`bash\nexport PATH=\"$HOME/.local/bin:$PATH\"\n`\nFor Fish (~/.config/fish/config.fish):\n`fish\nset -gx PATH $HOME/.local/bin $PATH\n`\nRestart the terminal or reload your shell configuration after making this\nchange.\nThe CLI does not ask for your Showpass email address or password. Account login\nrequires reCAPTCHA, which is intentionally not reproduced in a command-line\nenvironment. Instead, the CLI authenticates with the Private Organizer API\ntoken issued for your venue:\n`text\nAuthorization: Token YOUR_API_TOKE" }, { - "id": "/cli/02-commands", - "title": "Commands", - "path": "/cli/02-commands", - "content": "Create a new Showpass project. Opens an interactive wizard.\n``bash\nshowpass init my-event-site\n`\nWithout a name, one is generated for you:\n`bash\nshowpass init\n`\nStart the local development server with hot reload.\n`bash\nshowpass dev\n`\nRuns on http://localhost:8080 by default.\nCreate a production-optimized build.\n`bash\nshowpass build\n`\nOutput is written to dist/.\nDisplay current authentication status.\n`bash\nshowpass whoami\n`\nClear saved credentials and venue selection.\n`bash\nshowpass logout\n`\nShow available commands:\n`bash\nshowpass --help\n`\nGet help for a specific command:\n`bash\nshowpass init --help\n``" + "id": "/cli/commands", + "title": "Showpass CLI Commands", + "path": "/cli/commands", + "content": "Install the CLI with Homebrew:\n``bash\nbrew tap showpass/tap\nbrew install showpass\nshowpass --version\n`\nUpgrade it with:\n`bash\nbrew upgrade showpass\n`\nSee CLI overview and installation for PATH conflict\ntroubleshooting and the installer-script alternative.\nSecurely prompt for, validate, and save a Private Organizer API token:\n`bash\nshowpass login\n`\nInput is hidden. The token is checked against Showpass before it is persisted,\nand the venue is selected automatically from the Access Token User's\nemployment.\nIf a token is already stored, use showpass logout before entering a different\ntoken interactively.\nCreate a Showpass website project with the interactive wizard:\n`bash\nshowpass init my-event-site\n`\nWithout a name, one is generated automatically:\n`bash\nshowpass init\n`\nIf no valid token is stored, the wizard asks for the venue's Private Organizer\nAPI token. It then generates the project, installs dependencies, and starts the\ndevelopment server.\nStart the local development server with hot reload:\n`bash\nshowpass dev\n`\nGenerated projects run on http://localhost:8080 by default.\nCreate a production-optimized build:\n`bash\nshowpass build\n`\nOutput is written to the project's dist/ directory.\nRevalidate the stored token and display its connected venue:\n`bash\nshowpass whoami\n`\nIf Showpass has revoked the token, or its Access Token User no longer has a\nvenue employment, the CLI removes the unusable local authentication state.\nRemove the locally stored API token and venue selection:\n`bash\nshowpass logout\n`\nThis does not revoke the token in Showpass. Contact Showpass support if the\ncredential itself needs to be rotated or revoked.\nInspect CLI configuration without exposing the full API token:\n`bash\nshowpass config list\nshowpass config path\n`\nSensitive values are masked in command output. Avoid setting authentication\nvalues manually because showpass login performs remote validation first.\n`bash\nshowpass deploy\n`\nShowpass-hosted deployment is not available yet because the required " }, { - "id": "/facebook/01-introduction-to-facebook-pixel", + "id": "/facebook/introduction-to-facebook-pixel", "title": "About Facebook Pixel", - "path": "/facebook/01-introduction-to-facebook-pixel", + "path": "/facebook/introduction-to-facebook-pixel", "content": "Facebook Pixel (now called Meta Pixel) is a powerful analytics tool that allows event organizers to measure the effectiveness of their advertising by understanding the actions people take on their website. When integrated with Showpass, it provides valuable insights into ticket sales, event discovery, and attendee behavior.\nFacebook Pixel is a piece of code that you add to your website to collect data that helps you track conversions from Facebook ads, optimize ads, build targeted audiences for future ads, and remarket to people who have already taken some kind of action on your website.\n---\n- Use conversion data to improve ad targeting\n- Create lookalike audiences based on successful ticket buyers\n- Optimize ad spend for better return on investment (ROI)\n- Re-engage users who viewed your events but didn't purchase tickets\n- Create custom audiences for future event promotions\n- Build audiences based on specific actions (page views, add to cart, purchases)\n- Understand your audience demographics and interests\n- Track the customer journey from ad click to ticket purchase\n- Measure the impact of your Facebook marketing efforts\n---\nWhen properly configured, Facebook Pixel tracks several key events in the ticket purchasing process:\n- Page View: When someone visits your event page\n- View Content: When someone views specific event details\n- Add to Cart: When someone adds tickets to their cart\n- Initiate Checkout: When someone begins the checkout process\n- Purchase: When someone completes a ticket purchase\n---\nShowpass automatically tracks these Facebook standard events when properly configured:\n| Event | Description | When It Fires |\n|-------|-------------|---------------|\n| PageView | Someone visits a page | On every page load |\n| ViewContent | Someone views content | When viewing event details |\n| AddToCart | Someone adds items to cart | When tickets are added to cart |\n| InitiateCheckout | Someone begins checkout | When checkout process starts |\n| Purchase | Someone com" }, { - "id": "/facebook/02-installing-facebook-pixel", + "id": "/facebook/installing-facebook-pixel", "title": "Installing Facebook Pixel", - "path": "/facebook/02-installing-facebook-pixel", + "path": "/facebook/installing-facebook-pixel", "content": "This guide walks you through setting up Facebook Pixel (Meta Pixel) with your Showpass organization to track event performance and optimize your Facebook advertising campaigns.\nBefore you begin, make sure you have:\n- Admin access to your Showpass organization\n- A Facebook Business Account\n- A Facebook Ads Manager account\n- A Facebook Pixel created in Facebook Events Manager\n---\nIf you haven't already created a Facebook Pixel, follow these steps:\n1. Go to Facebook Events Manager\n2. Select your Business Account from the dropdown found on the top right\n1. Click Connect Data from the top left\n2. Select Web as your platform\n3. Choose Meta Pixel and click Connect\n1. Enter a name for your pixel (e.g., \"Your Organization Name - Events\")\n2. Add your website URL\n3. Click Continue\n1. Select Install code manually for Showpass integration\n2. Copy your Pixel ID (you'll need this for Showpass setup)\n> Note: The Pixel ID format looks like: 123456789012345\n---\n1. Log in to your Showpass dashboard\n2. Navigate to Organization Settings\n3. Select the Analytics tab\n1. Scroll down to find the Facebook Pixel integration section\n2. Click Configure or Enable\n1. Paste your Facebook Pixel ID (from Step 1) into the Pixel ID field\n2. The Pixel ID format looks like: 123456789012345\nEnable the events you want to track:\n- ✅ Page Views (recommended)\n- ✅ View Content (recommended)\n- ✅ Add to Cart (recommended)\n- ✅ Initiate Checkout (recommended)\n- ✅ Purchase (essential for conversion tracking)\n1. Click Save Settings\n2. Your Facebook Pixel is now active on your Showpass events\n---\n1. Install the Chrome Extension\n - Download the Facebook Pixel Helper Chrome extension\n2. Test on Your Event Page\n - Visit one of your Showpass event pages\n - Click the Pixel Helper extension icon\n - You should see your Pixel ID listed with a green checkmark\n1. Check Test Events\n - Go to Facebook Events Manager\n - Select your pixel\n - Click on the Test Events tab\n - Browse your event pages and verify events a" }, { - "id": "/facebook/03-about-facebook-conversions-api", + "id": "/facebook/about-facebook-conversions-api", "title": "About Facebook Conversions API", - "path": "/facebook/03-about-facebook-conversions-api", + "path": "/facebook/about-facebook-conversions-api", "content": "Facebook Conversions API (formerly Server-Side API) is a tool that allows you to share web and offline events directly from your server to Facebook. It works alongside Facebook Pixel to improve ad performance measurement and help you reach more people.\nFacebook Conversions API creates a direct connection between your marketing data (from Showpass) and Facebook's systems. Unlike the Facebook Pixel, which operates through the browser, Conversions API sends data server-to-server, providing more reliable data delivery and better attribution.\n---\n- Reduced Data Loss: Server-side data isn't affected by browser restrictions, ad blockers, or connection issues\n- More Complete Attribution: Capture events that pixel tracking might miss\n- Better Signal Quality: Combine browser and server data for more accurate measurement\n- Better Optimization: More complete data helps Facebook's algorithm optimize your ad delivery\n- Enhanced Audience Building: Create more accurate custom and lookalike audiences\n- Improved Attribution: Better understanding of which ads drive ticket sales\n- Privacy Compliance: Works within evolving privacy frameworks (iOS 14.5+, browser changes)\n- Reduced Dependence on Cookies: Server-side tracking is less affected by cookie restrictions\n- Platform Reliability: Direct server connection provides consistent data delivery\n---\nWhen someone interacts with your Showpass events, data flows through two paths:\n- User visits your event page\n- Pixel fires in their browser\n- Data sent directly to Facebook from user's device\n- User completes an action (e.g., purchases tickets)\n- Showpass server sends event data to Facebook\n- Data includes customer information and purchase details\nFacebook automatically deduplicates events received from both sources using:\n- Event ID matching\n- User identification parameters\n- Timestamp correlation\n---\nShowpass can send these events through Conversions API:\n| Event | Description | Data Included |\n|-------|-------------|---------------|\n| Purc" }, { - "id": "/facebook/04-installing-facebook-conversions-api", + "id": "/facebook/installing-facebook-conversions-api", "title": "Installing Facebook Conversions API", - "path": "/facebook/04-installing-facebook-conversions-api", + "path": "/facebook/installing-facebook-conversions-api", "content": "This guide provides step-by-step instructions for setting up Facebook Conversions API with your Showpass organization. Conversions API works alongside Facebook Pixel to provide enhanced tracking and improved ad performance.\nBefore you begin, ensure you have:\n- Facebook Pixel already installed and working with Showpass\n- Facebook Business Manager account with admin access\n- Admin access to your Showpass organization\n- Domain verified in Facebook Business Manager\n- Developer access to your Facebook Business Manager account\n---\nDomain verification is required for Conversions API to work properly.\n1. Go to Facebook Business Manager\n1. In the left sidebar, click Brand Safety\n2. Select Domains\n1. If your event domain isn't listed, click Add\n2. Enter your domain (e.g., yourdomain.showpass.com)\n3. Choose a verification method:\n - DNS Verification (recommended)\n - HTML File Upload\n - Meta Tag Verification\n1. Follow the instructions for your chosen method\n2. Wait for verification (usually takes a few minutes)\n3. Confirmed domains show a green checkmark\n1. Once the domain is verified, click Assign Partner\n2. Enter in 1769782139975843\n3. Enable Link to domain\n4. Click Assign\n- Send your Facebook Business ID to clients@showpass.com so we can add you as a Partner to our showpass.com Verified Domain\n- How to find your Facebook Business ID\n---\n1. Go to Facebook Events Manager\n2. Select your Business Account\n3. Choose the pixel you want to use with Conversions API\n1. Click on your pixel name\n2. Go to the Settings tab\n3. Scroll down to the Conversions API section\n1. Click Generate Access Token\n2. Copy the generated token immediately\n3. Store it securely (you won't be able to see it again)\n> Important: Keep your access token secure and never share it publicly. This token provides access to your Facebook advertising data.\n---\n1. Log in to your Showpass dashboard\n2. Navigate to Organization Settings\n3. Select the Analytics tab\n4. Scroll down to Facebook Conversions API\n- Access To" }, { - "id": "/google-tag-manager/01-introduction-to-showpass-gtm-integration", + "id": "/google-tag-manager/introduction-to-showpass-gtm-integration", "title": "1. Introduction to Showpass Google Tag Manager (GTM) Integration", - "path": "/google-tag-manager/01-introduction-to-showpass-gtm-integration", + "path": "/google-tag-manager/introduction-to-showpass-gtm-integration", "content": "Welcome to the Showpass Google Tag Manager (GTM) integration guide. This documentation will help you understand how to leverage GTM to track user activity, implement Google Analytics 4 (GA4), and integrate other marketing tags for events and purchases managed through Showpass.\nIntegrating Showpass with Google Tag Manager allows you to:\n- Track detailed ecommerce events (like view_item, add_to_cart, purchase)\n- Send this data to Google Analytics 4 (GA4) for comprehensive reporting\n- Implement various third-party marketing and analytics tags (e.g., Facebook Pixel, TikTok Pixel, Google Ads) without modifying your website code directly\n- Gain deeper insights into customer behavior and conversion funnels\n> Important: To avoid sending duplicate data to your Google Analytics 4 property:\n> \n> - Do NOT add the same GA4 Property ID (Measurement ID) in both your Showpass organization settings AND within your GTM container setup.\n> - If you are using GTM to manage your GA4 tracking (recommended approach), ensure that GA4 tracking is configured only through GTM. Remove any direct GA4 Measurement ID from your Showpass organization settings if you plan to deploy GA4 via GTM.\nAdvanced Knowledge: Effective use of Google Tag Manager requires advanced knowledge and practical experience with GTM concepts, tags, triggers, and variables.\nShowpass Disclaimer: Showpass is not responsible for GTM containers that are incorrectly set up or for any tracking issues that may arise from misconfiguration. Users are responsible for the correct implementation and testing of their GTM setup.\nIf you want to skip the step-by-step documentation and simply download our ready-to-use JSON file to import into your GTM, please go to section 12.\nIf you are not familiar with Google Tag Manager or wish to refresh your knowledge, we highly recommend these introductory resources from Google:\n- Tag Manager Help - Overview: https://support.google.com/tagmanager/answer/6102821?hl=en\n- Google Analytics YouTube Channe" }, { - "id": "/google-tag-manager/02-initial-setup-ga4-and-gtm-basics", + "id": "/google-tag-manager/initial-setup-ga4-and-gtm-basics", "title": "2. Initial Setup: GA4 and GTM Basics", - "path": "/google-tag-manager/02-initial-setup-ga4-and-gtm-basics", + "path": "/google-tag-manager/initial-setup-ga4-and-gtm-basics", "content": "This section guides you through the foundational steps of setting up a Google Tag Manager (GTM) container and a Google Analytics 4 (GA4) property, then linking them for basic page view tracking. This is the first step before implementing more advanced ecommerce tracking.\n- You have a Google account\n- You have access to Google Tag Manager and Google Analytics\n---\n1. Go to Google Tag Manager\n2. Click Create Account\n - Account Name: Enter a name for your account (e.g., your company name)\n - Country: Select your country\n3. Under Container Setup:\n - Container name: Enter a descriptive name (e.g., YourWebsite.com - Showpass)\n - Target platform: Select Web\n4. Click Create\n5. Agree to the GTM Terms of Service\n6. You will be presented with GTM installation code snippets. You won't need to install these directly on your Showpass pages, as Showpass will use your GTM Container ID. Make a note of your GTM Container ID (e.g., GTM-XXXXXXX)\n---\n1. Go to Google Analytics\n2. If you have an existing account, select it. If not, create a new Google Analytics account\n3. Navigate to the Admin section (usually a gear icon in the bottom left)\n4. In the \"Property\" column, click Create Property\n5. Enter a Property name (e.g., YourWebsite GA4)\n6. Set your Reporting time zone and Currency\n7. Click Next. Provide your business information (optional)\n8. Click Create\n9. For \"Choose a platform,\" select Web\n10. Set up your data stream:\n - Website URL: Enter your main website URL (even if you're primarily tracking Showpass)\n - Stream name: Give it a name (e.g., Main Website Stream)\n11. Click Create stream\n12. A \"Web stream details\" page will appear. Make a note of your MEASUREMENT ID (e.g., G-XXXXXXXXXX). This is your GA4 Property ID\n---\nThis tag will send basic page view data and initialize GA4 on pages where GTM is loaded.\n1. In your GTM container, go to Tags and click New\n2. Name your tag: A descriptive name like GA4 - Configuration - All Pages or Initialization\n3. Tag Configuration:\n" }, { - "id": "/google-tag-manager/03-standard-ecommerce-tracking-with-ga4-via-gtm", + "id": "/google-tag-manager/standard-ecommerce-tracking-with-ga4-via-gtm", "title": "3. Standard Ecommerce Tracking with GA4 via GTM", - "path": "/google-tag-manager/03-standard-ecommerce-tracking-with-ga4-via-gtm", + "path": "/google-tag-manager/standard-ecommerce-tracking-with-ga4-via-gtm", "content": "After setting up the basic GA4 Configuration Tag, the next step is to configure Google Tag Manager (GTM) to capture and send detailed ecommerce events from Showpass to your Google Analytics 4 (GA4) property.\nThis setup allows you to track user interactions with your products and events, such as viewing items, adding to cart, initiating checkout, and completing purchases. This data is crucial for understanding your sales funnel and customer behavior.\nShowpass sends ecommerce data to the Data Layer. This GTM configuration will listen for these Data Layer events and forward them to GA4.\n---\nThis trigger will fire your GA4 ecommerce tag whenever one of the specified Showpass ecommerce events occurs.\n1. In your GTM container, go to Triggers and click New\n2. Name your trigger: A descriptive name like Custom - Showpass Ecommerce Events or Ecommerce Triggers | All Events\n3. Trigger Configuration:\n - Click Choose a trigger type to begin setup...\n - Select Custom Event\n - Event name: Enter the following, using a pipe | to separate event names:\n ``text\n view_item|add_to_cart|remove_from_cart|begin_checkout|purchase|ecommerce_clear\n `\n > Note: ecommerce_clear is a custom event that clears the ecommerce cache in the data layer\n - Check the box for Use regex matching. This allows the trigger to fire on any of the listed events\n - This trigger fires on: Select All Custom Events\n4. Click Save\n---\nThis tag will send the ecommerce data to GA4.\n1. In your GTM container, go to Tags and click New\n2. Name your tag: A descriptive name like GA4 - Ecommerce Event Tracking or Ecommerce Tracking\n3. Tag Configuration:\n - Click Choose a tag type to begin setup...\n - Select Google Analytics: GA4 Event\n - Measurement ID: Enter your GA4 Measurement ID (e.g., G-XXXXXXXXXX). This should be the same ID used in your GA4 Configuration Tag\n > Tip: You can create a Constant Variable in GTM for your Measurement ID to reuse it easily and avoid typos. For example, create " }, { - "id": "/google-tag-manager/04-cross-domain-tracking-considerations", + "id": "/google-tag-manager/cross-domain-tracking-considerations", "title": "4. Cross-Domain Tracking Considerations", - "path": "/google-tag-manager/04-cross-domain-tracking-considerations", + "path": "/google-tag-manager/cross-domain-tracking-considerations", "content": "Cross-domain tracking is essential when a user's journey spans across multiple domains (e.g., your website yourdomain.com and Showpass showpass.com) and you want to maintain a single, consistent session and user view in Google Analytics.\nThere are two primary scenarios where cross-domain tracking is relevant with Showpass:\n1. Redirecting from your website to showpass.com (e.g., a \"Buy Tickets\" button links directly to an event page on Showpass)\n2. Using the embedded Showpass widget (iFrame) on your website\n> Note: For both scenarios, make sure you’ve added the GTM snippet to your website, inside the head tag.\n---\nIf your website directly links users to pages on showpass.com, you need to configure your Google Tag (used for GA4) in GTM to handle cross-domain tracking. This involves allowing the GA4 tag to \"decorate\" links with linker parameters (_gl).\nGoogle provides detailed instructions on how to configure cross-domain tracking for GA4. Please refer to their official help article:\n- Google Analytics Help - Set up cross-domain measurement [GA4]: https://support.google.com/analytics/answer/10071811\nYou only need to configure cross-domain tracking inside GA4.\n1. Go to Admin → Data Streams\n2. Click your Web data stream\n3. Find the card Google tag\n4. Click Configure tag settings\n5. Click Show all\n6. Click Configure your domains under Cross-domain tracking\n7. Add your domain(s) + showpass.com and Save:\n``bash\nyourdomain.com\nshowpass.com\n`\nCheck any link going between domains. It should add parameters like:\n`\n?_gl=1abcd1234\n`\nIf that appears — cross-domain tracking is active.\n---\nTracking user activity accurately within an iFrame (like the Showpass embedded purchase widget) presents challenges, especially with browser privacy features that restrict third-party cookies.\n> Recommended: For the most accurate tracking of widget conversions within GTM, Showpass strongly recommends using the postMessage iFrame tracking method.\n- This technique allows the iFrame to communicate da" }, { - "id": "/google-tag-manager/05-working-with-custom-html-and-javascript-in-gtm-for-showpass", + "id": "/google-tag-manager/working-with-custom-html-and-javascript-in-gtm-for-showpass", "title": "5. Working with Custom HTML & JavaScript in GTM for Showpass", - "path": "/google-tag-manager/05-working-with-custom-html-and-javascript-in-gtm-for-showpass", + "path": "/google-tag-manager/working-with-custom-html-and-javascript-in-gtm-for-showpass", "content": "When using Google Tag Manager (GTM) with Showpass, you might need to implement Custom HTML tags for third-party tracking pixels or other custom JavaScript functionalities. Due to Showpass's security settings, there are specific configurations required to ensure these custom scripts load and fire correctly.\nShowpass employs security measures that can block inline scripts or scripts loaded without proper attributes. To allow your GTM Custom HTML/JavaScript tags to execute:\n- You must add a nonce attribute to all block, you need to modify the opening \n`\nAfter:\n`html\n\n`\n4. Click Save for the tag\n5. Repeat this for all Custom HTML tags th" }, { - "id": "/google-tag-manager/06-tracking-custom-conversions-marketing-pixels", + "id": "/google-tag-manager/tracking-custom-conversions-marketing-pixels", "title": "6. Tracking Custom Conversions (Marketing Pixels)", - "path": "/google-tag-manager/06-tracking-custom-conversions-marketing-pixels", + "path": "/google-tag-manager/tracking-custom-conversions-marketing-pixels", "content": "Google Tag Manager (GTM) allows you to implement various third-party tracking tags (often called \"pixels\") for services like Facebook (Meta), Google Ads, X (Twitter), TikTok, Snapchat, Spotify and others. This section explains the general process of setting up these tags to fire on specific Showpass ecommerce events, using the data Showpass provides to the Data Layer.\n> Note: For your convenience, we provide ready to use configurations as an importable JSON file. You can download it and learn how to use it from this page.\nThe process for setting up most conversion or event tracking pixels involves these main steps in GTM:\n1. Creating GTM Variables: To capture dynamic data (like value, currency, item details) sent by Showpass for ecommerce events\n2. Creating GTM Triggers: To specify when your marketing tag should fire (e.g., on an add_to_cart event or a purchase event)\n3. Creating GTM Tags: To configure your specific marketing pixel with the necessary IDs and map the GTM variables to the fields required by the pixel\n---\nLet's walk through setting up tracking for the add_to_cart event. Showpass sends ecommerce.currency, ecommerce.value, and ecommerce.items parameters for this event (see the Showpass Event List table at the end of this section).\nYou need to create GTM variables to read the values that Showpass pushes to the Data Layer for the add_to_cart event.\n1. In your GTM container, go to the Variables tab\n2. Under \"User-Defined Variables,\" click New for each variable you need\nVariable 1: Currency\n- Name: DLV - ecommerce.currency (or a similar descriptive name)\n- Variable Type: Data Layer Variable\n- Data Layer Variable Name: ecommerce.currency (This must exactly match the key Showpass uses in the Data Layer)\n- Leave \"Data Layer Version\" as Version 2\n- Click Save\nVariable 2: Value\n- Name: DLV - ecommerce.value\n- Variable Type: Data Layer Variable\n- Data Layer Variable Name: ecommerce.value\n- Click Save\nVariable 3: Items\n- Name: DLV - ecommerce.items\n- Variable Type:" }, { - "id": "/google-tag-manager/07-showpass-data-layer-details", + "id": "/google-tag-manager/showpass-data-layer-details", "title": "7. Showpass Data Layer Details", - "path": "/google-tag-manager/07-showpass-data-layer-details", + "path": "/google-tag-manager/showpass-data-layer-details", "content": "This section provides detailed information about the ecommerce data that Showpass pushes to the Google Tag Manager (GTM) Data Layer. Understanding this structure is crucial for creating accurate variables, triggers, and tags in your GTM container.\nShowpass follows the Google Analytics 4 (GA4) ecommerce Data Layer format. Events are pushed to the dataLayer object with specific parameters.\n``javascript\ndataLayer.push({\n event: \"event_name\",\n ecommerce: {\n currency: \"USD\",\n value: 123.45,\n items: [\n // Array of item objects\n ],\n },\n});\n`\n---\nBelow is a detailed breakdown of each ecommerce event that Showpass sends to the Data Layer.\nDescription: Fired when a user views an event or product detail page.\nParameters:\n- event: view_item\n- ecommerce.currency: String (e.g., \"USD\", \"CAD\")\n- ecommerce.value: Number (total value of the items being viewed)\n- ecommerce.items: Array of item objects\nItem Object Structure:\n`javascript\n{\n item_id: \"12345\", // Showpass event/product ID\n item_name: \"Event Name\", // Event/product name\n item_category: \"category\", // Event category (if applicable)\n price: 50.00, // Individual item price\n quantity: 1 // Quantity\n}\n`\n---\nDescription: Fired when a user adds an item to their cart.\nParameters:\n- event: add_to_cart\n- ecommerce.currency: String (e.g., \"USD\")\n- ecommerce.value: Number (total value of items added)\n- ecommerce.items: Array of item objects\nItem Object Structure: Same as view_item\n---\nDescription: Fired when a user removes an item from their cart.\nParameters:\n- event: remove_from_cart\n- ecommerce.currency: String\n- ecommerce.value: Number (value of items removed)\n- ecommerce.items: Array of item objects\n---\nDescription: Fired when a user initiates the checkout process.\nParameters:\n- event: begin_checkout\n- ecommerce.currency: String\n- ecommerce.value: Number (total cart value)\n- ecommerce.items: Array of item objects\n---\nDescription: Fired when a user completes a purc" }, { - "id": "/google-tag-manager/08-advanced-iframe-purchase-tracking-via-postmessage", + "id": "/google-tag-manager/advanced-iframe-purchase-tracking-via-postmessage", "title": "8. Advanced & Preferred: iFrame Purchase Tracking via postMessage", - "path": "/google-tag-manager/08-advanced-iframe-purchase-tracking-via-postmessage", + "path": "/google-tag-manager/advanced-iframe-purchase-tracking-via-postmessage", "content": "Tracking conversions and user activity accurately within an iFrame (like the Showpass embedded purchase widget) is a significant challenge due to browser privacy measures that increasingly block third-party cookies and tracking mechanisms.\nTo overcome this, Showpass advocates for a more robust method: iFrame tracking using the postMessage API. This technique allows secure communication between the Showpass iFrame (child) and your website (parent page), enabling the iFrame to send event data directly to your GTM container on the parent page.\n- Accuracy: Bypasses many issues related to third-party cookie restrictions, leading to more reliable data\n- Privacy-Focused: Relies on direct communication rather than cross-domain cookie sharing for event data\n- Recommended: Considered a best practice for iFrame tracking in modern web analytics\nFor more context on iFrame tracking challenges and solutions:\n- Jellyfish Training - How to Track iFrames with Google Tag Manager: https://www.jellyfish.com/en-gb/training/blog/how-track-iframes-google-tag-manager\n- MeasureSchool - iFrame Tracking with Google Tag Manager: https://measureschool.com/iframe-tracking/\n---\nThis setup involves two Google Tag Manager containers:\n1. Child GTM Container (for the Showpass iFrame):\n - Create a new empty GTM Container ID\n - This container is specifically for the Showpass widget environment\n - Its role is to capture ecommerce events within the iFrame and postMessage them to the parent window (your website)\n - Add this to your Organizer Info > Analytics section in the Showpass Dashboard\n2. Parent GTM Container (on your website):\n - This is your existing GTM container that manages tracking for your primary website\n - Its role is to listen for messages from the Showpass iFrame and then push that data into its own dataLayer to trigger your standard ecommerce tags (e.g., GA4, marketing pixels)\n---\nThis tag will send data from the iFrame's Data Layer to your parent website.\nThis variable will r" }, { - "id": "/google-tag-manager/09-advanced-tracking-widget-and-direct-purchases", + "id": "/google-tag-manager/advanced-tracking-widget-and-direct-purchases", "title": "9. Advanced: Differentiating Widget (iFrame) vs. Direct Showpass.com Event Tracking", - "path": "/google-tag-manager/09-advanced-tracking-widget-and-direct-purchases", + "path": "/google-tag-manager/advanced-tracking-widget-and-direct-purchases", "content": "In some advanced scenarios, you might want to differentiate GTM tag firing behavior based on whether an event originates from within the embedded Showpass widget (iFrame on your site) or from a direct interaction on showpass.com (if your GTM container is also deployed there, or if Showpass sends server-side events that populate your website's GTM).\nThis allows for more granular control, such as:\n- Applying different attributions\n- Sending slightly different data to certain marketing tags\n- Preventing duplicate firing if events could be captured through both postMessage (from the iFrame) and direct Data Layer pushes (on showpass.com or via server events)\nThe key is to create a GTM variable that detects if the current context is an iFrame.\n---\nThis variable will return true if the GTM container is currently operating within an iFrame, and false otherwise.\n1. In your Parent GTM container (your website's GTM), go to Variables\n2. Under \"User-Defined Variables,\" click New\n3. Name your variable: Custom JS - Is iFrame (or similar)\n4. Variable Configuration:\n - Choose variable type: Custom JavaScript\n - Paste the following script:\n``javascript\nfunction() {\n try {\n // window.self refers to the current window.\n // window.top refers to the topmost window in the window hierarchy.\n // If they are not the same, the current window is in an iFrame.\n return window.top !== window.self;\n } catch (e) {\n // Catch potential errors if window.top is inaccessible due to cross-origin restrictions,\n // though less common for this specific check.\n return false;\n }\n}\n`\n5. Click Save\n---\nNow, use the {{Custom JS - Is iFrame}} variable as a condition in your relevant GTM triggers.\nRename your existing Custom ecommerce trigger for processing direct purchases Showpass - Ecommerce events - direct purchase\nEvent name\n`\nview_item|add_to_cart|remove_from_cart|begin_checkout|purchase|ecommerce_clear\n`\nCheck off use regex matching\nThis trigger fires on select Some custom events" }, { - "id": "/google-tag-manager/10-example-google-ads-conversion-tracking-setup", + "id": "/google-tag-manager/example-google-ads-conversion-tracking-setup", "title": "10. Example: Google Ads Conversion Tracking Setup with GTM", - "path": "/google-tag-manager/10-example-google-ads-conversion-tracking-setup", + "path": "/google-tag-manager/example-google-ads-conversion-tracking-setup", "content": "This section provides a step-by-step example of how to set up Google Ads conversion tracking and remarketing using Google Tag Manager (GTM) for Showpass events. This assumes you have already configured GTM to receive ecommerce data from Showpass (as outlined in previous sections, especially Section 3 and Section 6).\n- A Google Ads account\n- Conversion actions set up in your Google Ads account (you'll need Conversion ID and Conversion Label)\n- Your GTM container is correctly receiving ecommerce data from Showpass (e.g., purchase events with value, transaction_id, currency, items)\n---\nEnsure you have GTM variables to capture the required data for Google Ads conversion tracking. Refer to Section 6, Step 1 for detailed instructions on creating Data Layer Variables. You will typically need:\n- DLV - ecommerce.value\n - Data Layer Variable Name: ecommerce.value\n- DLV - ecommerce.transaction_id\n - Data Layer Variable Name: ecommerce.transaction_id\n- DLV - ecommerce.currency\n - Data Layer Variable Name: ecommerce.currency\n- DLV - ecommerce.items\n - Data Layer Variable Name: ecommerce.items (for product-level sales data)\n---\nThe Conversion Linker tag is essential for ensuring accurate conversion measurement by setting first-party cookies.\n1. In your GTM container, go to Tags and click New\n2. Name the tag: Google Ads - Conversion Linker\n3. Tag Configuration:\n - Click Choose a tag type to begin setup...\n - Select Conversion Linker\n - Linking across domains:\n - Check the box for Enable linking across domains\n - In the \"Domains to Link\" field, add your website domain and showpass.com. For example: yourdomain.com, showpass.com\n4. Triggering:\n - Click Choose a trigger to make this tag fire...\n - Select the Initialization - All Pages trigger (or a standard \"All Pages\" trigger)\n5. Click Save\n---\nThis tag builds remarketing lists by tagging users who visit your site or interact with Showpass events.\n1. In GTM, go to Tags and click New\n2. Name the tag: Google Ads -" }, { - "id": "/google-tag-manager/11-gtm-faq-troubleshooting-guide", + "id": "/google-tag-manager/gtm-faq-troubleshooting-guide", "title": "11. Google Tag Manager: FAQ and Troubleshooting Guide", - "path": "/google-tag-manager/11-gtm-faq-troubleshooting-guide", + "path": "/google-tag-manager/gtm-faq-troubleshooting-guide", "content": "This guide covers common issues regarding Google Tag Manager (GTM) integrations with Showpass, including advanced iframe setups, standard ecommerce tracking, third-party pixel configuration, and resolving console errors.\nThe Showpass GTM integration allows you to inject your own GTM container into the purchase flow. This enables you to:\n- Trigger tags for standard GA4 pagviews and ecommerce events (add_to_cart, begin_checkout, purchase).\n- Install third-party tracking pixels (e.g., Spotify, TikTok, Snapchat) that are not natively supported by Showpass.\n- Pass revenue, currency, and item data using the Data Layer.\nDo not use both.\n- Recommendation: Use the Showpass Native Integration for Facebook/Meta. Our native integration includes the Conversions API (CAPI) on the backend, which is complex to set up manually in GTM.\n- Warning: If you enter a Facebook/Meta Pixel ID in the Showpass dashboard _and_ add a Facebook/Meta Pixel tag in GTM, you will double-count conversions and inflate your data.\n- Best Practice: Use Showpass Native settings for Facebook, and use GTM for all other third-party scripts (GA4, Google Ads, Spotify, TikTok, etc.).\nYes. You can setup custom tags in GTM.\n- Event Mapping: Some platforms allow you to use predefined event types or create your own. You can configure tags for specific actions like AddToCart or BeginCheckout by creating triggers for those specific Showpass events and passing the vendor-specific variable\nWe reccomend using the iFrame Purchase Tracking via postMessage\nThis ensures higher accuracy, as it relies on the parent domain sending data to marketing pixels.\n---\nSymptom: You are writing custom JavaScript to reference the GTM Data Layer or Container ID (often in Child/Parent iframe setups), and the script is breaking or returning undefined.\nCause: In JavaScript, a hyphen (-) is treated as a subtraction operator. If you reference your Container ID directly in a variable name (e.g., window.dataLayer_GTM-SP1234567), the browser tries t" }, { - "id": "/google-tag-manager/12-json-ready-to-use-importable-containers", + "id": "/google-tag-manager/json-ready-to-use-importable-containers", "title": "12. Ready To Use Importable Containers", - "path": "/google-tag-manager/12-json-ready-to-use-importable-containers", + "path": "/google-tag-manager/json-ready-to-use-importable-containers", "content": "For your convenience, we provide ready-to-use GTM container JSON files.\nYou can download them directly from this page and import them into your Google Tag Manager container.\nThese templates include all required tags, triggers, and variables needed for tracking your Showpass events via GTM, and only require a few updates before publishing.\nIncludes:\n Google Analitycs (GA4)\n Google Ads (AW)\n Snapchat\n Spotify\n TikTok\n---\nExamples:\n- When users click on your ads, they directly go to your event page on showpass.com (eg., https://showpass.com/your-event-slug)\n- A “Buy Tickets” button on your website links directly to an event page on showpass.com (eg., https://showpass.com/your-event-slug)\nIn this scenario:\n You only need one GTM container (your website's container)\n You only need to import one JSON file\n---\nIf you don’t already have a GTM container:\n1. Go to tagmanager.google.com\n2. Click Create Account\n3. Enter:\n Account Name: your business name\n Container Name: your website domain\n4. Choose Web\n5. Click Create\nCopy and install the GTM snippet into the and of your website.\n---\nDownload the container template:\n Showpass-Default.json\nThis template includes everything needed for direct or redirect-based tracking.\n---\n1. In GTM, go to Admin → Import Container\n2. Upload Showpass-Default.json\n3. Choose:\n Workspace: Default Workspace (recommended)\n Import Option: Merge\n4. Review the summary\n5. Click Confirm\n---\nAfter import:\n1. Go to Variables\n2. Update any variables filled with xxxxxxx\n Examples:\n TikTok Pixel ID\n Spotify Pixel ID\n GA4 ID\nReplace them with your own values.\n---\nAll tracking tags come paused by default.\n1. Go to Tags\n2. Click each tag you want to activate\n3. Switch Paused → Unpause\n4. Save\nFinally, click Submit → Publish to push changes live.\n---\n---\nExample:\nYou embed the Showpass widget directly into your website using an