Skip to content
Bought a ticket? Go to help for ticket buyers

Selling Esora tickets from your own website

Your website can be the place where people decide, and Esora the place where they pay. A Buy button on your site opens the Esora event page with the checkout already prepared: the right ticket selected, the quantity set, your discount applied, the buyer’s details filled in. The buyer pays, and the ticket with its QR code lands in their email. No account is needed on either side.

This page is written for you and for whoever builds your website. Every section is optional; take only the parts you need. The first three need no developer at all.

  • The buyer pays on Esora. Your link opens the event page on esora.app, in the same tab or a new one, as your site prefers. There is no widget to embed inside your own page. Payment, seat selection and ticket delivery all happen on Esora, so you never handle card details or ticket files.
  • No account is required. The buyer enters a name and an email, pays by card or Apple Pay, and gets the ticket by email with its QR code.
  • On a phone with the Esora app installed, your link opens the app with the same ticket, quantity and discount preselected. Only the buyer’s details (the part after #, below) stay in the browser.
  • The language is in the link. An address that starts with esora.app/en/ opens in English, esora.app/hy/ in Armenian, esora.app/ru/ in Russian, whatever the buyer’s own settings. Pick the language of the page you place the link on. A tracking link chooses the language for each buyer automatically.

The simplest integration is the event page itself. Copy its address from the browser, or open the event in the Esora Organizer app or the web console and use Share. The buyer arrives on the event page and picks a ticket.

https://esora.app/en/events/jazz-night-4ab19c7e

Each ticket type has its own link that opens the checkout with that ticket already selected. Open the event, then the ticket type. Right under the visibility setting there is a line with the ticket’s link. Copy it in the web console, or tap the line in the app to share it.

https://esora.app/en/events/jazz-night-4ab19c7e?tier=1f0a2d63-6b19-4e5b-9d51-77ac0b3f2e10

Use one such link per Buy button when your page lists ticket options itself: “Standard” opens checkout with Standard, “VIP” with VIP.

Create a promo code for the event, then add promo= and the code to any of the links above. The buyer sees the discounted price right away and never types the code.

https://esora.app/en/events/jazz-night-4ab19c7e?promo=MEMBERS20
  • Works with or without a ticket in the link. Without tier=, the checkout opens with the code applied and the buyer picks the ticket.
  • Codes are not case-sensitive. members20 and MEMBERS20 are the same code.
  • If the code no longer applies (expired, used up, wrong ticket), the buyer sees that it did not apply and can still pay the full price.
  • The same link works in an email. Send the discount link to your members or past attendees and every click arrives with the discount already on.

Everything a promo code can do (percentage or fixed amount, a use limit, an expiry, a minimum quantity) applies to the link as well. Since the code is visible in the address, anyone who receives the link can use it as many times as the code allows; set a use limit or expiry if that matters.

If a ticket should exist only for people who come from your site (members, partners, a corporate rate), do not make it public. Set its visibility to Unlisted: it does not appear on the event page, and only the ticket’s link can open it. Copy that link the same way as for a public ticket.

https://esora.app/en/events/jazz-night-4ab19c7e?tier=k7m2p9qx4wz8

The link is the key: anyone who has it can buy the ticket, and it never expires. Treat it like a password. Pair it with a sale window or a quantity if you need a stop.

Should I use a promo code or an unlisted ticket?

The difference from a promo code: a promo code discounts a ticket everyone can see; an unlisted ticket is invisible without the link. Use the promo code when the public price and the member price are the same ticket; use an unlisted ticket when your visitors get a ticket nobody else should see.

Add quantity= to a ticket link to open the checkout with that many tickets. Any whole number from 1 to 50. If the ticket has a per-order limit, or fewer are left, the buyer gets the highest number still allowed.

https://esora.app/en/events/jazz-night-4ab19c7e?tier=1f0a2d63-6b19-4e5b-9d51-77ac0b3f2e10&quantity=2

On an event with reserved seating the buyer picks seats, so quantity is ignored there. The ticket and the promo code still work.

For a developer. If your site already knows who the buyer is (they are signed in, or just filled a form), pass their name, email and phone so the checkout opens with them filled in. These three values go after a #, not after the ?, and must be URL-encoded the way any web framework encodes a query value: @ becomes %40, + becomes %2B, a space becomes %20.

AddWhat it does
name=Ani%20GrigoryanFills the buyer’s name.
email=ani%40mail.comFills the buyer’s email.
phone=%2B37499123456Fills the phone number, when the ticket asks for one.

A full link with everything on it:

https://esora.app/en/events/jazz-night-4ab19c7e?tier=1f0a2d63-6b19-4e5b-9d51-77ac0b3f2e10&quantity=2&promo=MEMBERS20#name=Ani%20Grigoryan&email=ani%40mail.com&phone=%2B37499123456

The ticket, the quantity and the promo code go after the ?, joined by &. The buyer’s own details go after the #, joined by & as well.

Why do the buyer's details go after the #?

Everything after a ? in a web address is recorded in many places: analytics, advertising pixels (yours and ours), error reports, server logs. A name and an email do not belong in any of them. Everything after a # never leaves the browser. Esora reads it as the page opens, fills the checkout fields, and removes it from the address bar before any analytics or pixel runs, so the buyer cannot copy the address and pass their own details on by accident.

What if the buyer is signed in, already typed their details, or opens the Esora app?
  • A buyer who is signed in to Esora keeps their account name and email. The link does not overwrite them.
  • Anything the buyer already typed in the checkout wins over the link.
  • On a phone where the Esora app opens the link, the details are not carried into the app; the buyer types them there.

Sales that arrive through a plain link are counted, but the Sales page cannot tell they came from your site. Two ways to make them show up under your site’s name in Where buyers came from:

  • A tracking link, no developer needed. Create one for your website (the Links section on the event’s Overview in the console, or the Promote tab in the app), name it “Our website”, and use its short address on your Buy button. Everything from this page rides through it: https://esora.app/l/ab12cd34?tier=…&quantity=2&promo=…#name=…. Full details in Tracking links.
  • Tags on the link, for a developer. Add utm_source=yoursite.com&utm_medium=website to any event link. The sales appear as yoursite.com · Website in the You column. Use utm_medium=email for links in your emails; they appear under Email. Add utm_campaign= to tell two campaigns apart.

If your site runs a Meta Pixel, connect it under Meta ads → Connect Meta in the Esora Organizer app and every purchase is reported back to Meta as a purchase event. See Meta ads. If you use Google Analytics and want purchases in your own property, get in touch and we set it up with you.

Open your finished link in a private browser window. You should land on the event page with the checkout open, the right ticket and quantity selected, the discount shown, and (if you passed them) the name and email filled in. Nothing is charged until someone pays, so you can try as many times as you like.

Common mistakes:

  • The link opens the event but not the checkout: the tier= value is wrong or the ticket is paused or hidden. Copy the link again from the ticket type.
  • The discount is not shown: the code is expired, used up, or limited to a different ticket. Check it under promo codes.
  • The buyer’s details are empty: they were put after ? instead of #, or were not URL-encoded.
  • The page opens in the wrong language: change the /en/, /hy/ or /ru/ part of the address.
PartWhereWhat it does
tier=…after ?Opens checkout with this ticket. For an unlisted ticket, this is the only way in.
promo=CODEafter ?Applies the promo code. Works without tier.
quantity=2after ?Starts with this many tickets (1 to 50). Ignored on seated events.
utm_source=yoursite.com&utm_medium=websiteafter ?Credits the sale to your website on the Sales page.
name=…, email=…, phone=…after #Fills the buyer’s details. Never recorded anywhere.

Need a hand building the link? Get in touch.