Changelog: Winter is coming

We continue to work feverishly behind the scenes on the next version of Tito but in the meantime here are some pulls, tugs and tweaks to our existing app:

  • ⚙️ Added the maximum upload limit for file type questions (tl;dr it’s 5MB)
  • ⚙️ Added a link to our privacy policy from our event homepages on the advice of the W3C Advisory Board (🙌)
  • ⚙️ Added title attributes to the input fields on the event homepage for accessibility and on the advice of the W3C Advisory Board (double 🙌)
  • ⚙️ Made some changes to the language and arrangement of invoices and receipts based on regional requirements
  • 🐞 Fixed an issue with discount codes on donation type tickets
  • ✨ Broke out docs into a separate app and added algolia search
  • ⚙️ Updated the Stripe country list in Payment Options to reflect the latest beta statuses
  • ⚙️ Added an option to allow the assigning of unassigned tickets when tickets are locked by the organiser (private beta feature)
  • Added a section to the docs about the mystical world of Open Graph data used when sharing links on various platforms

Changelog: It’s The Final Countdown

I’m lucky because I love what I do — it’s a privileged position for sure, but taking a break is healthy. And especially when it’s to welcome a new arrival into the world. So while we wait for d-day and before I’m elbow deep in newborn nappies again here’s my last changelog for a few weeks...

  • ⚙️ Added ticket unvoided webhook
  • 🐞 Fixed an issue revealing secret tickets via a discount code when a custom domain is being used
  • ✨ When a ticket is locked (private beta feature) we’ve tweaked the behaviour based on feedback so that ticket assigns optionally cannot be done without contacting the organisers
  • ⚙️ Added event date and location to the account ticket export
  • ⚙️ Enhanced our Tito widget to play better with Google Analytics

Changelog: Check It Out

  • ✨ Some tweaks, tidies and improvements to the UI and language around assigning tickets in the checkout. Hopefully this will make things clearer, but do let us know what you think via the button below. We’ve also added some documentation to give you a better idea of what happens when an order is placed:
  • 🐞 Fixed an inaccurate timezone indicator on the event homepage schedule section by removing it. We might bring it back at some point
  • 🐞 Fixed an issue where you couldn’t log a refund in Tito after the payment gateway refund period had expired
  • 🐞 Tidied up a couple of inconsistencies on the order confirmation email
  • 🐞 Allow organisers to log refunds even if the time period for performaing a refund has passed
  • 🐞 Fixed a bug where the attendee file uploader would silently fail when the size limit was exceeded
  • 🙈 Fixed a couple of super embarrassing typos in the docs that we shall never mention again
  • 🐞 Fixed a super weird edge case bug where the assign window wouldn’t pop up when it was supposed to
  • 😂 Doc’s favourite commit message of the week:



Changelog: Times They Are A-Changin'

I know I said we didn’t do much “onstage” stuff, but what I meant to say is that we didn’t do much big onstage stuff. Here’s a list of a few of the smaller things that have kept us busy since our last changelog...

  • 🐞 Fixed a receipt layout issue when hiding tax types
  • 🐞 Fixed a confusing billed/unbilled figure in the Reports section
  • 🐞 For those having issues selling ticket in Vietnamese Dong (this could have just been one very, very patient customer — thank you Rachman) the bug be gone
  • 🐞 Tablet users needing to accept lenthy terms for an event will no longer be screaming in scroll-less frustration (sorry)
  • 🐞 Broken images and video for The Dude have been patched
  • 🎉 We created a page for EU VAT advice we’ve been given by some people who know way more about VAT than us: (feel free to link to it)
  • 🐞 Fixed a bug where the company name mandatory setting in the Tickets view was being ignored
  • 🎉 We’ve dropped our pricing for those on the highest 5% tier — they can now enjoy a 3% rate (see separate in-app message)
  • 🐞 Fixed some issues with emails being sent when reassigning tickets based on manual orders
  • 🎉 Event emails sent now include share links in the footer
  • 🎉 Daily digest emails should now arrive at 8am your time rather than our time
  • 🎉 Added a link to the Android Play store for our Android check-in app because I’m pretty sure nobody but us knew we had one
  • 🎉 PDF order invoices now have a paid/unpaid stamp
  • 🎉 Add functional pricing (private beta feature)
  • 🎉 Add an option to exclude the ticket list from messages sent to attendees
  • 🐞 Make it clear if a waitlist ticket can’t be offered due to the ticket having expired
  • 🎉 Include individual open stats for messages sent
  • 🎉 Let organisers limit the total number of tickets per order
  • 🐞 Various improvements to the duplicate event function
  • 🐞 A not insignificant amount of tweaks, fixes and polishings to private beta features
  • 🚀 A completely new app to handle our billing... we call it “the billing app”
  • 😞 Added manual verification of accounts to allow message sending from Tito. Because spammers.
  • 🙀 A whole bunch of updates to the API and webhooks — too numerous to list

So, we’re back to our regular *cough* posting of changelogs... did you miss us? Of course you did!


Changelog: Commit message quality control edition

It has been almost eight months since our last changelog post, too long and with things not so fresh in my mind I have been going through our commit logs to remind me what changes have been made.

But first, after reviewing eight months of commit logs I spotted some quality commit messages that got past our QA department. Authors who will remain nameless, you know who you are ;-) The most descriptive commit message award has to be given to “see if this is better”, the most confusing award goes to “unescape tennis”, the most worrying for “no idea” and the best intentions but otherwise useless goes to “making Paul happy”. The overall winner had to be “oops #pantsdown”. (Sorry)

Anyway here a list of some of the smaller changes we have been making. For the bigger changes and new features stay posted, updates are coming soon.

  • Introduced a new file question type so files can be attached to tickets.
  • Interested people can now be imported in bulk.
  • Tickets can be now be duplicated.
  • iCalendar (.ics) files are now attached to ticket emails.
  • Added the ability to embed Wistia videos on event pages to go with YouTube, Vimeo and a couple of others.
  • Organised and added more detailed descriptions of the settings in the Customise section.
  • Added Foursquare support for event venues.
  • Fixed the “Contact the organizer” mailto link which wasn’t working in Chrome.
  • Imports can now contain UTF-8 characters.
  • Reworked our import pages to give a better indication of their progress.
  • Added support for .xsls imports.
  • Added country name to ticket webhook requests.
  • Added progress indicators for Excel, Pdf, Zip file exports.
  • Fixed Excel exports so phone numbers would be handled correctly.
  • Added the ability to export CSV/Excel versions of receipts.
  • Moved the currency symbol from every row to just the header row in exports.
  • The refund type e.g. logged in Tito only or logged and processed is now included in the Orders export.
  • Fixed some registration fields and checkbox question fields which were not being highlighted correctly when left unanswered.
  • Fixed the used discount quantity on zero value discount codes and discount codes applied to free tickets.
  • The ordering of questions when they are attached to both Tickets and Activities can now be controlled.
  • Add filters to find expired waitlist offers and to find used or unused discount codes.
  • Fixed a bug in the 24 hour summary email where the event totals was being counted up to the time the email was sent instead of up to the end of the previous day.
  • Added a setting to control the title/description of links to your event when they are posted on Twitter, Facebook or Slack.
  • Updated the public timeline of events page.
  • Added Tito fees VAT to the figures on the Reports screen.
  • Introduced a setting to prevent event pages being added to search engines.

Changelog Gavin Sheridan Edition

Dear Gavin, (he’s sat next to me here in the office, so why not write the changelog as a letter to him?)

It’s been over 3 months since last I wrote a changelog. It felt like 3 weeks. I’m scarlet.

But we haven’t been idle, as our last few blog posts indicate. We’re now a real company, with our own GitHub organisation and businessy things like a balance sheet, and a P&L chart that shows that we spend way too much on subscription software. But at least we know now, right?

Not only is our business savvy on the up, but we’ve been doubling down on keeping Tito nice and stable, bug-fixing our happy little faces off, and introducing a few little surprises here and there—which I’ll tease below—in the usual changelog fashion. Here goes!

  • As requested by Andrew Martin in a delightfully English way, we now have “Add to Google Calendar” as an option from the view ticket screen. Even though I’ve never used the “Add to Calendar” option in Tito, loads of you seem to swear by it.
  • We’ve long teased API access, but we’ve been pretty unhappy with the API that we were working on. A few months ago, we started work on a new jsonapi-compliant API and we couldn’t be happier with how it’s shaping up. It’s still pretty basic right now, so it’s not much more than changelelog-worthy when it comes to news, but if you want to follow along, the docs are being updated here (source), I’m working on a rubygem here (source), and there’s even an unofficial node.js client. Super, super, super excited about this one… Feel free to play around … and feed us back ( if things don’t work.
  • The Company Name field was being shown in every confirmation email, even for events where it wasn’t being used. It only shows now if it’s been filled.
  • We added error messages to ticket imports. Our importing process could be improved so much, and we’ll get to this eventually, but for now “less shit” is better than “completely crap”.
  • Teeny tiny bug that’s so small it’s barely noticable on the dashboard was fixed.
  • Another few tiny bugs that neither you nor I care about were fixed.
  • Yep, more tiny ones. Like, these are bugs that probably affect 2 people. Maybe even just 1 person.
  • We were seeing an issue where if you uploaded a banner image with the same name as your previous banner image, then you’d continue to see the old one, because it would be cached in our CDN. Now when you upload a banner, we take the md5sum of the uploaded file and use that as the filename. Cache. Busted. Pow!
  • We weren’t displaying your custom email signatures in ticket-related emails. Sorry about that. Thanks to an eagle-eyed customer, we finally took notice, and … now we are!
  • Finally (as if that wasn’t all impressive enough? We’re only a team of 3!!!): File question types. We snuck this in quietly last week on behalf of a customer who sponsored the feature. You can now set a quesiton to be a “File” type and your attendees can use it to upload a file when they’re completing questions on a ticket. When you view the responses, you can download them all at once as a zip file. Beautiful!

As a bonus, we have a few new private-beta features that you might want to help us kick the tires on. Just let us know if you’d like to try these and we can enable them on your account:

  • Test mode. This allows you (if you’re using Stripe) to process transactions using your Stripe test account, and they’ll end up in Tito in a “test” environment, without muddying up your live environment. Great for … testing!
  • Custom roles. We’re beefing up our team support to add custom roles so that you can go a bit more fine-grained on what your teams can and cannot do. It’s still in development, but will be available for testing shortly.

So there you have it, all up to date and delightful. I’m most excited about the API stuff, and we’re going to tag-team on that and roles to try and get them nice and production-ready in the next few weeks.

Anyway Gavin, thanks for visiting the office today. That’s it for another edition of the Tito changelog. You’re a great fella. Thanks for the tea. Now: pint?



All The Small Things

It’s been a while, but we have not been idle! Here’s a rundown of the many, many small updates we’ve pushed over the past 5 weeks:

  • PayPal Refunds. PayPal disallows API-based refunds after 60 days. Who knows why? Then again, who really knows why PayPal do anything. In any case, Tito is now much more explicit and helpful when a refund is no longer possible.
  • The “No results” message for empty searches was duplicating. Sadness levels of all empty searches have been halved by only displaying the message once.
  • 60% of all errors that look like this “[Tito/production] CSV::MalformedCSVError - Illegal quoting in line 2.” no longer happen. We can only assume that somebody was trying to import passages from distasteful books.
  • Fixed an issue in the web-based checkin app that was causing it to crash in certain circumstances. For about the millionth time.
  • The beta “Waiting List” feature didn’t work with the Tito button. Clicking “Join Waiting List” would leave you waiting quite a while and nothing would happen. Now when you click it, the cool 3d effect happens to open a modal within a modal. Whhhhooooaaaa!
  • A rake of really tiny bugs that most people won’t ever notice, but helps us sleep better at night.
  • Added the ability to choose a custom background colour for event homepages. In general, we’re much more on board with customisability of Tito pages and we have some cool things coming, but this one has been requested so many times, it just makes sense. Let the interior decorator in you out, and go wild!
  • Another rake of bug fixes featuring fixes to things like slugs, refund processing errors, caching, link icons and browser overlay errors.
  • You can no longer reduce the quantity of a ticket below the number that has been sold / issued. Because that would be silly. It was silly. Tito is now that little bit less silly. But only a little bit.
  • Fixed a bug in the Message compose window that was preventing a Mozilla employee from sending a message using Firefox. Morto! Scarlet!
  • Disabled opening a new window in a mobile window. This was preventing orders within mobile browsers embedded within, say, Twitter for iOS or something. A real pain.
  • Added the ability to customize the pre-filled message when posting to Twitter. Now you can make the language match your audience. Bae. Right? That’s a thing?
  • Added a slew of options to tickets to set requirements for name, email, company name and VAT number. Disabling all requirements means allowing for super efficient checkout, particularly for things like a concert, where you don’t necessarily need everyone’s name.
  • Added a “Test Webhook” link to the webhooks screen. How anyone ever implemented anything with Tito’s webhook implementation before this is beyond me!
  • Fix to the overlay with a bug that caused an infinite spinner if you pressed “Continue” rather than “Apply” after adding a discount. Asynchronous JavaScript events. How does anyone even?
  • Emoji support! 😉😉😉😉😉😉😉😉😉☀️🌐🌐🌐🌐🌐🎊👑⛵️💴🏢🏬🏭🏣🏤🏫🇮🇪😉😉😉😉😉😉😉😉😉 … you can now use emojis in your event names, descriptions etc. Even discount codes. Try it!

Action Stations

Action Stations!

“Let’s see if we can get rid of the ‘Actions’ menu” he said, coyly. 5 weeks and over 500 commits later, we’ve gone and shipped our 2nd major UI update in 4 months. This one builds on the strengths of March’s release, adding tons of improvements, fixes, niggles ironed out, and sanity restored to many, many screens.

Kudos, thanks, praise and free tickets to our celebration party go to Peter McDonagh for some really fantastic UI work on this release.

  • A “woah” UI
    • A cleaner, clearer home screen The previous home screen was quite heavyweight and dragged attention every which way. Today’s home screen is light as a feather, highlighting the two things that we want to get you to quickly: your last viewed event, or the New Event link. Everything else is there if you need it, just out of the way.
    • Event nav that gets out of the way If our event nav and app header used to be a set square on top of the main UI, it is now a mount that the UI sits on: exactly where it should be. Rather than shocking blue, the blue-gray sits behind the main content, and the shocking blue acts as a highlight. The whale-grey and shocking blue stick true to the original “marine” theme that we were going for.
    • Considered list views for Tickets and Orders Long relegated to the simple formula of “Name, email, other”, our list views now introduce a structure of their own. Tickets are now listed with their sales counts and status inline. Orders lead now with their reference, which is the essence of an order, with clear payment status. Elsewhere, list items are more consistent.
    • Simpler “inner” stats dashboards “No order selected” clearly shows that this is where order details will appear when selected. If a list is empty clearer empty states give an overview of what the section contains, and clearer call to actions use shocking blue: since we’ve taken blue from the main nav, it’s now particularly effective as a highlight/call-to-action colour. Exactly as it should be.
    • Consistent visual headers Details screens now share a consistent clear header. We’ver restored the close “x” button to a more conventional position, and introduced a consistent place for edit links across all of the detail screens. These headers give a clear sense of orientation at a glance, while providing quick essential information.
    • An order details screen that looks like an order In terms of a redesign, this is where we started. “An order is an order, so it should look like an order”. Orders now look like what they represent: styled as a flat skeumorph of an invoice, with order details and payment history outlined in a single view that also includes context links and actions. There’s even a direct link to the payment provider. The rest of the interface is informed by this pattern.
    • An attendee details screen that looks like a ticket Just as “An order is an order”, “An attendee is an attendee” … or in this case, a ticket-holder. The attendee details screen now includes a flattened skeumorph that mirrors the attendee’s public ticket view, again with context links top right and actions bottom left.
    • A cleaner, clearer ticket details screen Despite being higher in the nav, this was the screen we addressed last, and is the most challenging screen in the app. The screen acts as a status, as well as a control panel to quickly alter the state of a ticket: whether it’s on sale, has particular requirements, should be on sale at a certain time, has particular questions attached, or is public or private. The scren stays consistent to the rest of the app, but introduces an additional header status with quick access to state and visibility toggles.
      • Toggle switches that slide Speaking of toggles. Pete’s comp included iOS-style toggle switches. Obviously these were going to be super handy for making quick clear changes to ticket states, but this isn’t native and we’re in HTML, CSS and JavaScript and. A quick web-search reveals that there are many iOS toggle switch imitators, but none of them actually slide. Rest assured, these toggle switches are clickable, tappable, springable, touchable, slideable and loveable. Please enjoy them at your own risk.
    • Cleaner Search/Filter/Sort/Export headers for lists Out of the way, there if you need them. Sensing a theme?
    • Goodbye to “Actions” menus This was the original intent of this redesign. “Actions” menus (or “kitchen sink menus”) are ultimate in style over substance. Necessary actions can be added willy nilly, but when it comes to finding core functions, the UI turns out unusable. All of our key screens now no longer have any action menus, with key actions appearing on the central view of details screens. Our hope is that it is now consistent, clear and obvious where actions are, and fewer folks will need to reach for! In general, links that show things in a different context are on the top right of details screens (like view PDF, view public links etc.), and actions (eg. refund, archive, void) are bottom left of details screens
    • Strong, clear, active states for list items Once again, now that the main nav is now longer sucking all the blue from the known universe, blue is put to good use as the active highlight colour for the current selected list item. And it looks smart.
    • Loading animations that accelerate time If you gaze into the centre of our new loading animations, you gain 500ms back of your life. Do it enough and we swear you’ll find yourself getting younger.*
  • Nicer words
  • We’re trying to build an app that feels great to use. This release puts a little bit more personality here and there, without going too overboard. There’s still a lot to do in this department, but we’re happy with the direction.

Along with the UI overhaul, we also shipped a few new features:

  • An updateable graph
    • For the longest time, our graph looked pretty if you had any data in the previous 30 days, but otherwise just stuck around like a rotting centipede painted blue and grey. By default, it now displays orders, tickets, page-views and uniques spanning your event creation until your event is over. You can also change the start and end dates to narrow down the graph to a date of your choosing. Much more useful, and our pledge to you that we care about visualising your data, and we’ll be adding more visualisations and more filter-ability soon.
  • starwavatars Since day zero, the force has been strong with the demo data that appears in Tito when you first create an event. Now we’re increasing our moon-count to 2. Anywhere we list attendees, if someone hasn’t set up a gravatar, we will display a … ahem … starwavatar. Thanks to Jory for the midi-chlorian-tastic icon set. All that’s left is for Pete to go and learn some lore. We may explore Middle Earth in the future…
  • “Import Attendees from CSV” A beta feature that’s been gathering dust in our “hasn’t shipped yet” cupboard for way too long. Does what it says on the label!
  • Paging, grouping and toggling for Dashboard activities Apart from a rather delicious restyle, the activity timeline on the event dashboard now has some neat functionality: First, it is off-by-default, but if there are new items, the bell on the dashboard lights up and you can pin the feed if you want it, or toggle it off. Next, if an action is repeated by someone, it is only displayed once on the dashboard. Finally, you can now page through all of the activity for an event if lots of things happen.

Aaaaaaaand a big breath. What a huge release. This is a pretty significant milestone for us. All that’s left to be said is: 📈

  • You actually won’t. It’s just a trick of psychological perceived performance. You’re still getting older. Sorry.

Wait, wait, wait, wait, wait... and reveal

  • You may or may not have noticed (particularly may not if you aren’t in Ireland), but our bills now correctly apply Irish VAT. Go Team Ireland! Mr. Taxman, we’re doing our best.
  • In Customize -> Services, apart from the form being much easier to understand now, you can customize the message that is pre-filled when someone wants to share that they bought tickets on Twitter. Unfortunately Facebook doesn’t allow pre-filling. We could probably figure it out, but that would require spending time with Facebook’s API, which will probably have changed by the time we figure out how to do anything.
  • Fixed a few more little bugs when listing things. Tito is slowly getting better.
  • This one is rather delightful. While prepping some I18n features? (Ask us about them!) we added a British English locale. Soon you’ll be able to choose between being an organiser and an organizer. It’s kind of ridiculous how excited I am by this.
  • In our super-secret in-progress API, you can now access a JSON representation of your event report.
  • A gorgeous new activity summary. Out with the simple plain text of yore, and in with an even simpler, but stylish straight-outta-a-Swedish-design-house minimal HTML email. Woof.
  • And now for the little big news: waiting lists! A long time ago, in a galaxy far, far away, a man named Clemens created the Tito WaitlistedPerson model. The twin moons of Tatooine have spun many times since then, but today, Clemens’s dream comes alive: Tito now has a waiting list feature. Docs and announcement to follow, but for now, it’s in public beta, and everyone can use it. O frabjous day! Callooh! Callay!
  • We’ve made it to being feature complete. Out of the box, Tito can now:
  • Take expressions of interest
  • Email interested parties when tickets go on sale
  • Manage the ticket sales flow
  • Sell out, and enable a waiting list when a ticket sells out
  • Email secret links to people who joined the waiting list when tickets become available
  • Email attendees before during and after the event
  • Check attendees in on the day

All in a week’s work. Enjoy the weekend!


A Quick Links Update

In Customize -> Links, you can now add:

  • tel:// links, eg. tel://555-1234 … When someone taps the link on a mobile, the number will call automatically. (or enact the most annoying feature on OS X Yosemite: Facetime calling)
  • mailto: links, eg. … if the one email isn’t good enough for you, go nuts and add as many as you like.