How to integrate your website with Ticketsolve: A guide for web developers

In today's digital landscape, seamless integration between various systems is vital for an optimal user experience. Ticketsolve aims to provide seamless integration with clients' websites, offering two primary integration methods:

  1. Complete event listing and customer journey with Ticketsolve
  2. Ticketsolve's XML API integration

Using Ticketsolve's event listings for the full customer journey is the simplest option to set up, whilst the power of our XML API offers an opportunity to maximise the benefits of the platform and create a smooth customer journey.

Using Ticketsolve's event listings

For clients who prefer an easy setup, Ticketsolve offers a complete event listing and customer journey solution. It requires simply updating the CMS links to point to Ticketsolve. The client's Ticketsolve link follows the format:

[clientname].ticketsolve.com

You can get the correct client name by getting in touch with the client directly, or by contacting Ticketsolve Support.

This straightforward integration only requires changing links within your CMS to link over to the Ticketsolve purchase path. 

The majority of our customers add all the show information into their CMS and then link over to Ticketsolve once the customer selects the date and time of the event they want to book for, whilst others choose to use the Ticketsolve event listings which means all the show information is held within Ticketsolve. 

This is a very simple integration, however it does mean more manual work for the client as if they want to have show information within their own CMS, they will have to build it in the CMS and repeat it again in Ticketsolve.

Using Ticketsolve's XML API integration

The Ticketsolve XML API has been built in order to allow 3rd party web applications to pull event information from the Ticketsolve system into the clients CMS. This feed provides all the information required to be able to provide event filtering, event listing and event calendar functions within the client's website. The information within the feed is relatively high level and includes information such as show name, show description, show images, event dates etc. 

Once customers have browsed the events on the client's website they will get transferred over to the Ticketsolve purchase path to complete the sale. This ensures that the purchase path is as simple and straightforward as possible, with a reduction in the number of clicks to help increase conversion rates. 

The styling of the Ticketsolve site can be changed to incorporate the branding guidelines of the client's website. This will ensure the customer has consistency of brand association throughout the entire journey. 

The XML feed

We publish one publicly available feed for each Ticketsolve account which includes all upcoming shows that have been programmed into the system. 

 Important

The XML feed is designed to be read and cached on a regular heartbeat, i.e. every 15 minutes, by a server process. The data can then be used to generate dynamic content pages and or serve the cached XML feed directly to a client. It is NOT to be called on a per request basis either by a web server or client e.g. web or mobile browser or mobile app.

The XML feed can be obtained from the client directly or by getting in touch with Ticketsolve Support.

The feed URL will be structured as follows: 

[clientname].ticketsolve.com/shows.xml 

Shows in the XML feed

Shows are grouped by venue within the XML feed and include:

  • Show ID: Unique identifier for the show

<show id="873612349">

  • Name: Show name

<name>
<![CDATA[ 100% Simon Brodkin ]]>
</name>

  • Description: Full HTML description of the show

<description>
<![CDATA[ <p> </p><p><font size="2">After three hugely successful BBC series as Lee Nelson, multiple sell-out tours and various court appearances following world-famous stunts on Theresa May, Sepp Blatter, Donald Trump, Kanye West and Britain&rsquo;s Got Talent, the award-winning comedian unleashes his funniest creation yet&hellip; himself!&nbsp; <br> Fresh from a critically-acclaimed, sell-out run at the Edinburgh Fringe Festival, Simon brings his debut stand-up show 100% Simon Brodkin to London.&nbsp;</font></p><p><font size="2"><br> One of The Guardian&rsquo;s &lsquo;Top Shows At The Fringe&rsquo;&nbsp;</font></p><p><font size="2">One of The Evening Standard&rsquo;s &lsquo;Best Comedy Shows at The Fringe&rsquo;&nbsp;</font></p><p><font size="2"><strong>&ldquo;Sky-high gag rate&rdquo;</strong>&nbsp;- Metro <strong>&ldquo;Hilarious&rdquo;</strong>&nbsp;- The Scotsman <strong>&ldquo;A sublime piece of comedy&rdquo;</strong>&nbsp;- The List</font></p> ]]>

</description>

  • Event Category: The classification given to the event by the client.

<event_category>Comedy</event_category>

  • Production Company: Name of the production company that is associated with the show.

<production_company_name/>

  • Priority: Number assigned to show to determine order of listings if chronological order is not used.

<priority>0</priority>

  • URL: URL for the show.

<url>https://leicestersquaretheatre.ticketsolve.com/shows/873612349/events</url>

  • Version: Number that determines the version of the show, will increase each time a change is made.

<version>71</version>

  • Tags: A list of tags that can be used to filter the shows listing.

<tags>
<tag>avalon</tag>
<tag>avalonfigs</tag>
<tag>comedy</tag>
<tag>lst</tag>
<tag>maintheatre</tag>
</tags>

  • Images: All images that are associated with the show. Each image will also have a priority number enabling you to use images in different parts of the website i.e., all priority 99 will be the main show image and priority 90 will be for the homepage banner.

<images>
<image priority="0">
<url size="large">https://dc40ra2rfm3rp.cloudfront.net/as-assets/variants/PSKHZj1KX6oFM6rvz7vii4Zj/d82b4c5034021c15162868846a860fc142237fb62f146ef228d6181ef8a17941</url>
<url size="medium">https://dc40ra2rfm3rp.cloudfront.net/as-assets/variants/PSKHZj1KX6oFM6rvz7vii4Zj/899ee75d16d6b70db2b21f6c4966ef3d2579809db90bcd35bdb76fe15d348550</url>
<url size="thumb">https://dc40ra2rfm3rp.cloudfront.net/as-assets/variants/PSKHZj1KX6oFM6rvz7vii4Zj/4eb43d50c1f0a64373a149b1cb3802b5054f703d5f5ee2de27363d4b4db3f65a</url>
</image>
</images>

  • Properties: This will include additional information such as running times, age restrictions, videos, cast names etc,.

<properties>
<property>
<name>Running Time</name>
<value>100 minutes</value>
</property>
<property>
<name>Age Restriction</name>
<value>14+</value>
</property>
<property>
<name>Please Note</name>
<value>Prices include £1.50 venue restoration levy</value>
</property>
</properties>

Events in the XML feed

The Events section holds all the relevant information about the individual events within the overall show. The data structure follows the show feed however, within the shows feed there are URLs for the events.xml which includes information for each individual event:

[clientname].ticketsolve.com/shows/873612349/events/128254370.xml

The XML feeds for individual events includes:

  • Event ID: The unique identifier for each event.

<event id="128254370">

  • Name: Event name.

<name>
<![CDATA[ 29 Oct 2021 - 19:00 @ Leicester Square Theatre 100% Simon Brodkin ]]>

  • Event_number: Same as event ID.

<event_number>128254370</event_number>

  • Date_time: Information about the start time and date of event.

<date_time format="ISO 8601" zone="IST">2021-10-29T19:00:00+01:00</date_time>

  • Opening_time: Information about time doors open for an event.

<opening_time format="ISO 8601" zone="IST">2021-10-29T19:00:00+01:00</opening_time>

  • Duration: Length of event in minutes.

<duration>100</duration>

  • Comment: Event-specific comments that have been added.

<comment>
<![CDATA[ ]]>
</comment>

  • URL: The URL for the specific event listing.

<url>https://leicestersquaretheatre.ticketsolve.com/shows/873612349/events/128254370</url>

  • Status: Gives status of whether an event is sold out or has available tickets.

<status>available</status>

  • Available: Number of tickets available.

<available>146</available>

  • Capacity: The full capacity of event.

<capacity>314</capacity>

  • Onsale_time: If an event has a onsale time set, which sets the event live and bookable automatically, it would show here.
  • Fee currency: The currency type used.

<fee currency="GBP">15%:4</fee>

  • Maximum_tickets: The maximum number of tickets to be purchased in one order per event.

<maximum_tickets>20</maximum_tickets>

  • Prices: All available ticket prices for an event will be listed here.

type>Full Price</type>: type of price, options are full, concession or comp
face_price currency="GBP">21.5</face_price>: price of ticket
selling_price currency="GBP">21.5</selling_price>: price of ticket
<prices>
<price>
<type>Full Price</type>
<face_price currency="GBP">21.5</face_price>
<selling_price currency="GBP">21.5</selling_price>
</price>
</prices>

The XML structure used in the feed is custom and doesn't conform to any particular standard (e.g. iCAL, RSS, Atom). The feed always includes upcoming (see note below) bookable shows only and will change over time and as shows sell out of their public allocation or end up having all their events in the past. The shows feed also has full URLs to the Ticketsolve booking pages and unique ids for the shows and their child elements.

Note: 'Upcoming' means the show has events on from today into the future - as time passes, upcoming listings will not display shows with events in the past.

Multi Domain feature

Ticketsolve offers the ability for the client to use their own domain on the Ticketsolve pages which ensures that the whole purchase journey is completed under the same domain. There are many benefits to this, for example not worrying about cross domain tracking and security.

To keep the major technicalities out of it, this means we will be able to serve your ticketing solution under domains such as tickets-clientname.clientname.com instead of the default clientname.ticketsolve.com

How to set up Ticketsolve's multi domain feature

Domain

First and foremost we need your DNS provider to set up a CNAME record under your top level domain e.g. bigtheatre.com that points to one of our load balancers.

It would look something like this:

Type Hostname Value TTL(seconds)
CNAME bigtheatre-tickets.bigtheatre.com <loadbalancer-addess> 3600


Ticketsolve would create the new subdomain (accountname-tickets) and provide load balancer address for you.

That's all we need for the subdomain. There is one more DNS entry that you might have to provide us with below depending on the path you select:

SSL

As you probably know, unsecure websites are generally frowned upon these days and it is a definite minimum requirement when dealing with purchases and similar data, so we will need you to decide on one of two paths.

  1. Ticketsolve generates an SSL certificate for you.
  2. You provide us with the details for your SSL certificate that would secure the subdomain you decided upon above.

Ticketsolve generated SSL certificate

If this is the path you decide on, we will generate an SSL certificate and then pass on another record for you to enter into your DNS records, for example:

Type Hostname Value TTL(seconds)
CNAME <hash>.bigtheatre-tickets.bigtheatre.com <hash>.<hash>.asm-validations.aws. 3600


Once this has been added to your DNS records the SSL certificate has been validated and we can now use it to serve up our ticketing system under the subdomain provided above.

Your own SSL certificate

For us to be able to use your own SSL certificate, we will require the following from your end:

  • Certificate file
  • Certificate private key
  • File containing your Certificate chain

Once we have these three, we will be able to add it to our certificate manager and with that be able to serve our ticketing system under the subdomain provided above.

Want to know more?

How to change the styling of your Ticketsolve website

Web Accessibility on Ticketsolve

How to change the 'from' sending address for Ticketsolve system emails

Was this article helpful?

Comments

0 comments

Please sign in to leave a comment.