{"version":"https://jsonfeed.org/version/1","title":"Tito Blog","home_page_url":"https://diva.pub/","feed_url":"/posts.json","icon":"https://uploads-cdn.vi.to/aa47f38e860440c1e4e9f88e2e3fd602.png","next_page":"https://diva.pub/posts.json?page=3","prev_page":"https://diva.pub/posts.json?page=1","items":[{"id":"https://diva.pub/posts/a-roundup-of-our-meet-tito-dinners-over-the-past-few-months","title":"A roundup of our \"Meet Tito\" dinners over the past few months","content_html":"\u003cp\u003eIn September we put out a call to meet us in various cities, starting in Copenhagen when I visited to attend TechBBQ on the 10th September. What followed was a series of dinners that were fun and insightful, and will hopefully continue to be opportunities for us to meet existing and new customers and have a bit of fun along the way.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/B0bR-p1Bks-K6FCtvg8uunN45yPLVvmhdCZZ1Fy2UEQ/rs:fit:3000:3000/fn:img_0407/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by84MDVkYTE4Y2Fl/ZjkyZDVhODcxMjdj/YTdjOTlhYzRjYS5q/cGVn.jpeg\"\u003e\u003cp\u003eThe Copenhagen dinner was at \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://paulicph.dk/\"\u003ePauli\u003c/a\u003e, an award-winning restaurant in Sydhavnen. I won’t say that the name didn’t influence my choice, but it’s de-facto a really great restaurant, and was perfect for the informal vibe I was going for. It was great to hang out with Maria from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://techbbq.dk/\"\u003eTechBBQ\u003c/a\u003e, as well as meeting \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/madskjer/\"\u003eMads Kjer\u003c/a\u003e from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://ticketbutler.io/\"\u003eTicketbutler\u003c/a\u003e, a Tito “co-opetitor”. It was cool to hang with \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/florianmunz/\"\u003eFlorian\u003c/a\u003e from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://depfu.com/\"\u003eDepFu\u003c/a\u003e (we’re happy customers), and \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/aron-allen-244946187/\"\u003eAron Allen\u003c/a\u003e who ran \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://cycle.js.org/\"\u003eCycleJS\u003c/a\u003e back in the day, not to mention my good friend \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/gavinsheridan/\"\u003eGavin Sheridan\u003c/a\u003e from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.vizlegal.com/\"\u003eVizLegal\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eAt the end of the meal, Luka, our delightful host for the evening, mentioned that they would be doing a pop-up in London the week of the 7th October.\u003c/p\u003e\u003cp\u003eThis was perfect because I was going to be in town for Intercom’s \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://pioneer.intercom.com/\"\u003ePioneer\u003c/a\u003e event on the 10th. I immediately booked the Pauli popup in Carousel on the 9th, and we had another fantastic meal. Joining us was Tito investor and PMA CEO, \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/richardking001/\"\u003eRich King\u003c/a\u003e, as well as \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/dletorey/\"\u003eDave LeTorey\u003c/a\u003e who organises \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://2024.stateofthebrowser.com/\"\u003eState of the Browser\u003c/a\u003e, along with \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/lazyatom/\"\u003eJames Adam\u003c/a\u003e, steward of \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://lrug.org/\"\u003eLondon’s Ruby User Group\u003c/a\u003e.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/TjxSqlDi8QeMBqgWP43ddyQoXtR6_ZcH6JE1szZFZOI/rs:fit:3000:3000/fn:carousel/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by9lYmVjNjdhOWUz/OTZkMTFkMTA1YzMx/YzZiMTM0MWZiNi5w/bmc.png\"\u003e\u003cp\u003eFast-forward a few weeks, and I attended \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://haggisruby.co.uk/\"\u003eHaggis Ruby\u003c/a\u003e, a regional Ruby event in Edinburgh, the first in 10 years since the last Scottish Ruby Conference, a conference dear to me as one of my earliest speaking opportunities. Haggis Ruby was relatively small, but full of spirit, excellent talks and an all-round good vibe.\u003c/p\u003e\u003cp\u003eOur Edinburgh dinner was at \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://tipoedinburgh.co.uk/\"\u003etipo\u003c/a\u003e, and since we had slightly higher numbers, we booked “The Pasta Room”, a private room with a sharing style menu. Of all the dinners, this was probably my favourite.\u0026nbsp;\u003c/p\u003e\u003cimg src=\"https://images.vi.to/ls56wXYtaGlGETbndFSB7zJANdNni9RXkwHGRc0JRLU/rs:fit:3000:3000/fn:img_1026/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by9jODI5YzkxNjY3/MTcxODVjODQ4YjA3/MmQwMWJiYTNjYy5q/cGVn.jpeg\"\u003e\u003cp\u003eHaving learned about “Jeffersonian-style” dinners from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/mojombo/\"\u003eTom Preston-Werner\u003c/a\u003e and \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/fowlerchad/\"\u003eChad Fowler\u003c/a\u003e earlier this year at \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://blog.tito.io/posts/this-last-this-next-thing\"\u003eThis Next Thing\u003c/a\u003e, I was eager to try the format. It’s safe to say that everyone around the table loved it, none of whom had tried it before. It’s a relatively simple contrivance: at various points during the meal, we would pose a question that would be answered by one person talking at a time. It gave everyone a chance to share a bit of themselves with the whole group, and conversely, it gave everyone in the group a chance to hear from everyone round the table.\u003c/p\u003e\u003cp\u003eJoining us in Edinburgh was Tito engineer Bill, \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/briandcorcoran/\"\u003eBrian Corcoran\u003c/a\u003e from TuringFest, \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.linkedin.com/in/emmeline-caines-gooby-9579195/\"\u003eEmmeline Caines-Gooby\u003c/a\u003e who was at BrightonSEO, \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://mikemcquaid.com/\"\u003eMike McQuaid\u003c/a\u003e from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://brew.sh/\"\u003eHomeBrew\u003c/a\u003e / \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://workbrew.com/\"\u003eWorkBrew\u003c/a\u003e, and a bunch of other new friends from the conference.\u003c/p\u003e\u003cp\u003eFinally, at \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"http://smashingconf.com/\"\u003eSmashingConf\u003c/a\u003e Antwerp last week, we hosted a small group at \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://v.restaurant/fashiondistrict/\"\u003eV Modern Italian\u003c/a\u003e, including Tito founding customer Marc Thiele from \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://beyondtellerrand.com/\"\u003eBeyond Tellerrand\u003c/a\u003e, Mariona from Smashing, and \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.timvandamme.com/\"\u003eTim Van Damme\u003c/a\u003e, a once-or-twice contributor to some of Tito’s designs (Tim designed the \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://vi.to/home\"\u003eVito\u003c/a\u003e logo). Alas, it was too loud to do Jeffersonian, but we had a very pleasant meal.\u003c/p\u003e\u003cp\u003eSmashingConf Antwerp was our first time ever hosting a sponsor stand at a conference. We had a really good time: we did a run of t-shirts and all of them got taken, so if you see one in the wild, say hello! We also gave away a few prizes: we hosted a small “guess the number of marbles” competition, but instead of marbles, we asked folks to guess how many events in our events database table in the last 7 years (which is the number of years SmashingConf has been using Tito for). Congratulations to (coincidentally) Irish-woman Shaun MacGabhann who was probably the person who was most excited about the Zelda Game and Watch. It couldn’t have gone to a better home. And if anyone’s curious, the correct answer was 82,645, with the nearest guess being 75,010.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/XN8V-FS6UHKrsboLq7aGGKkGpk-PsfDU3PtEe5lLPsA/rs:fit:3000:3000/fn:ab313f09-837f-4024-9472-17e0eaacf0d8_1_105_c/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by9kZTIwMDljNzE5/NjRjNjMyNDdmZGI5/NDdmN2RhMDY3MC5q/cGVn.jpeg\"\u003e\u003cp\u003eFinally, thanks to Smashing for their warm welcome of my 8 year old son who joined me on the trip. Smashing had a remarkably child-friendly Lego table (given there was only one child at the event). Doc sent him over to “do something Tito”, and I warned that my kid would take that literally. Not 15 minutes later did he come back with this Tito logo in Lego blocks. A proud father moment.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/oPULoqZrfea3cNhQkLBHPchPjrdqM5RNhnk1OEsx3xg/rs:fit:3000:3000/fn:img_1131/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by9kYTc5NzgyNjlk/ZDllNmQwNDBhNWUx/NGJhNDNjZmJkYy5q/cGVn.jpeg\"\u003e\u003cp\u003eCatch you at the next thing!\u003c/p\u003e","date_published":"2024-11-07T12:48:00Z"},{"id":"https://diva.pub/posts/domain-blocking","title":"New feature: Restrict tickets to specific domains or email addresses","content_html":"\u003cp\u003eOrganisers often ask us if they can specify domains and email addresses that can or can’t register for an event.\u003c/p\u003e\u003cp\u003eThe answer up to now has always been no (more about why, later). But from today, it's yes!\u003c/p\u003e\u003cp\u003eWe’ve added a new \u003cstrong\u003eRestrictions\u003c/strong\u003e section under the Settings menu. Type or paste in a list of domains or individual addresses — Tito can differentiate between them — to block and/or allow, and these rules will apply immediately to both registering and assigning tickets.\u003c/p\u003e\u003cp\u003eUse the Block list to disallow registrations from certain domains or organisations (such as \u003ccode\u003egmail.com\u003c/code\u003e or \u003ccode\u003eevil.corp\u003c/code\u003e). You can also block individual email addresses, for instance those of previously banned attendees.\u003c/p\u003e\u003cp\u003eFor events that require a high level of security or exclusivity, the Allow list enables you to specify trusted email addresses or domains that are the \u003cem\u003eonly\u003c/em\u003e ones permitted to register. For instance, for an internal event you might restrict registrations to your organisation’s domain. Or if you have a guestlist of people you’re planning to invite, you can add their email addresses to the Allow list before sharing the registration link, and only folks on the list will be able to sign up.\u003c/p\u003e\u003cp\u003eYou can also combine the Block and Allow list for greater control. In this case, the Allow list will be considered \u003cem\u003eexceptions\u003c/em\u003e to the people on your Block list, rather than the only domains or addresses that can register. This is useful if you want to block a particular domain but allow specific addresses from within that domain.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/TRy0KAklvN7jYEWsA0xg4-d0FO503UW7PZF4OJZNUtI/rs:fit:3000:3000/fn:screenshot-2024-10-17-at-11-08-52/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by83ZTNkYjAxZjNm/YWNhMzdlZTU5YTRh/YTVkNjM3NjdkYi5w/bmc.png\"\u003e\u003cp\u003eWhen trying to register or assign a ticket with a restricted email address or domain, users will see a warning that the email address is not authorised, and will not be able to proceed.\u003c/p\u003e\u003cp\u003eOf course, we’re aware there’s nothing to prevent someone from using a different email address to get around the rules you’ve set up. In fact, this is one of the reasons it’s taken us so long to prioritise this feature, despite it being requested so much. In the end though, we decided there was enough merit in deterring casual would-be registrants, and especially in enforcing registration to specific domains. We hope these new Restriction settings will reduce the admin burden associated with keeping an eye out for unwanted registrations or unpermitted email addresses, and having to cancel or edit them respectively.\u003c/p\u003e\u003cp\u003eAs a bonus, we’ve also taken this opportunity to publicly release our \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://help.tito.io/en/articles/9027417-unique-emails\"\u003eUnique Emails\u003c/a\u003e feature, previously only available on request. This allows you to limit the assigning of tickets to one per unique email address, which is useful when working with our API to pull data into third-party apps that require attendees to have a unique email address.\u003c/p\u003e\u003cp\u003eShipping these features is part of our ongoing commitment to making Tito more secure and customisable. We always appreciate our customers letting us know what they want to see next, so if you have any feedback, suggestions or questions, drop us a line anytime at \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"mailto:support@tito.io\"\u003esupport@tito.io\u003c/a\u003e.\u003c/p\u003e","date_published":"2024-10-21T13:26:00Z"},{"id":"https://diva.pub/posts/break-things-like-an-engineer","title":"Being an engineer means I can break things in my spare time too","content_html":"\u003cp\u003eLast Sunday morning I was emptying the ash from our wood pellet furnace — something I've done around 100 times.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eA small mistake\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eIt takes about 15 minutes including the 10 minutes it takes for the machine to switch off and on. This time, 10 seconds after switching it on, I realised that I'd forgotten to put the ash trays back in. That's a silly mistake but the consequences aren't too bad. The correct resolution is to switch it off, put the trays back in and then switch it on again.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eThe quick fix\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eThat would take between 5 and 10 minutes though and I thought that if I was quick then I could just open the door, pop the ash trays in, close the door and be done in a few seconds.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eThe bigger mistake\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eWhat actually happened was that as I opened the door, a mechanism to clean the burner started to operate and a metal tray slid out blocking the door from closing again. Now I couldn't close the door and the cleaning mechanism was stuck mid-clean because the door was open.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eThe longer fix that didn't work\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eNo problem, I thought. There's a service menu to allow you to operate various mechanisms manually. But that's protected by a password to stop idiots like me messing with it. I'm pretty sure it's a factory password so I searched the Internet to see what it is. Sure enough, it is the furnace temperature plus the letters \"EST\". I wasn't sure what that temperature was so guess 70°, then 60° and finally 65° which does work. After 30 minutes of poking around in the settings I'm not supposed to touch I gave up and resigned myself to calling an actual, qualified engineer the following day.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eSolution appears from nowhere\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eI went out for a bike ride but this problem was niggling away in the back of my mind. On the way home it occurred to me that if I could fool the furnace into thinking the door was closed, it might reset itself.\u003c/p\u003e\u003cp\u003eAs soon as I'm home I take a closer look and eventually find a little micro-switch. As soon as I press it, the furnace starts its switch-on sequence and after ten seconds, it retracts the tray and I can finally close the door properly.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eOff and on again\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eTen minutes later, and it was whirring away but still not heating any water. I switched it off and on again. This time it worked and our water started getting hot again.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eDay job\u003c/strong\u003e\u003c/p\u003e\u003cp\u003eThe parallels with my day job as an engineer at Team Tito are strong:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003eTrying to do something trivial and making a simple mistake that isn't actually very serious\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAn attempt to fix it quickly that causes a much bigger one\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eTrawling the Internet for answers\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eTrying things I don't really understand\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eComing up with the solution while thinking of something else entirely\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eHave you tried switching it off and on again?\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e","date_published":"2024-09-30T15:47:00Z"},{"id":"https://diva.pub/posts/tito-changelog-q3-2024","title":"Tito Changelog: July to September 2024","content_html":"\u003cp\u003eThe bulk of our time on Tito the last couple of months has been spent working on a new feature to give organisers more fine-grain control over the registration flow…but we're not quite ready to announce that yet.\u003c/p\u003e\u003cp\u003eSo, in the meantime, here are the improvements and bug fixes we've shipped over the last while.\u003c/p\u003e\u003ch2\u003eJuly\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003eMake sure original query params are preserved when initialising the widget\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eFix Open Graph meta tags for LinkedIn\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAdd test flow redirect for PayPal Platform payments\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eLink to help article in Opt-ins blank state\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eEnsure \"View on PayPal\" link doesn't appear on test mode transactions\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eGet New Taiwan Dollar payments working on Paypal Platform\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAllow people to manually set which events the widget can load when they are using the widget JS without any tags\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eLet organisers enable account level invoice numbering and specify an offset to start off with\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAdd warning if the widget event doesn't specify both an account and an event\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eFetch list of events to duplicate with pagination so it will handle more than a 1000\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eWatch for when Stripe js is loaded and, when it is, load the Stripe Payment Element\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eEnable the test mode plugin inside iframes so test mode works when running the widget in iframe mode\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eDisable collection of shipping address on PayPal Platform for new events\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eInclude a 'None' option when an activity group allows between 0 and 1 optional activities to be selected\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eDependency updates\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003eAugust\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003eDon't insert HTML tags by rendering markdown in plaintext emails\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAdjust associations for new Rails 6.1 default of required instead of optional\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eDelay loading Stripe payment element to try fix issue loading when widget is in iframe mode\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eChange help text for upcoming tickets to clarify that you need to put ticket on sale\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eOnly mark an activity group as required if it has a minimum number of selections set\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAdd \"What's new\" to Help dropdown and link to Changelog posts\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eDon't allow tax rulesets to be deleted if they are attached to any releases\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eUpdate locked tickets warning style\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eNo longer store the `html_body` in the version history of Messages to improve performance\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eRemove unused :banner_link and :external_order_reference_format features\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eResponsive fix for event homepage\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eEnsure supercombo tickets are correctly translated in checkout\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e\u003ch2\u003eSeptember\u003c/h2\u003e\u003cul\u003e\u003cli\u003e\u003cp\u003eImprove attendee imports and questions\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eRestrict event homepage if email address is not confirmed\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eFix \u003ccode\u003eArgumentError\u003c/code\u003e bug affecting accounts with account level invoicing enabled\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eUpdate add company name translation to be more consistent in German\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAdd missing columns to discount codes export\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eCap max included emails on messages to 500 to improve performance\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eAllow duplication of discount codes\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eStore a paper trail when archiving all past events in one go\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eIf a native HTML bookmark link is clicked cancel Vue router navigation\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eExclude the :tito parameter when preserving original query params with the widget to prevent close button issues\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eShow unanswered questions and activity groups on checkout tickets show view\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eWhen an order has already been cancelled, display an order cancelled modal\u003c/p\u003e\u003c/li\u003e\u003cli\u003e\u003cp\u003eReveal state and postal code fields in Edit order form by default\u003c/p\u003e\u003c/li\u003e\u003c/ul\u003e","date_published":"2024-09-30T07:19:00Z"},{"id":"https://diva.pub/posts/8-sponsorship-ideas","title":"8 ways to make people want to sponsor your event","content_html":"\u003cp\u003eWe recently put together a process for evaluating sponsorship opportunities as they arise.\u003c/p\u003e\u003cp\u003eIt contains a bunch of questions to ask ourselves, but effectively they’re all just trying to answer a single question: will it be worth it?\u003c/p\u003e\u003cp\u003eThat’s the main thing any company wants to figure out when being asked to part with their cash. And as someone trying to secure sponsorship for an event, you sometimes have your work cut out helping them see the value.\u003c/p\u003e\u003cp\u003eWe've seen a lot of conference websites in our time, and sponsorships are presented and promoted in all kinds of ways, from the uncompelling to the inspired. Here’s a round up of some of the best ideas and execution we’ve seen from Tito customers in recent months.\u003c/p\u003e\u003ch3\u003eDo the legwork on the sponsor’s behalf\u003c/h3\u003e\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://affiliateworldconferences.com/europe\"\u003eAffiliate World\u003c/a\u003e has very cleverly recognised that money isn’t the only consideration for sponsors. Time and energy are also at a premium. Their solution is to take the bulk of the work off the sponsor’s plate, addressing a major potential blocker to sponsoring in the first place.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/11S3bl5hERMkZnLqlHjhGsdYygwPWEu8aPgwMH4KVs4/rs:fit:3000:3000/fn:affiliate-world/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by9iOGU2M2M1Mzcy/MzUzNTZhYmFhODcy/M2ViMGNiNWU1NC5w/bmc.png\"\u003e\u003cp\u003eThe process is laid out simply in three illustrated steps: 1) Choose your booth; 2) Send your artworks; 3) Exhibit. This makes exhibiting feel like no more work than sending a couple of emails and showing up on the day, which is a very enticing proposition.\u003c/p\u003e\u003cp\u003eEven smaller event teams can take inspiration from this approach. Perhaps you can outsource some of the work to a trusted contractor and factor it into the price of the sponsorship package. Convenience is worth an awful lot to people — just ask the creators of food delivery apps!\u003c/p\u003e\u003ch3\u003eMake sponsors central to the event experience\u003c/h3\u003e\u003cp\u003eEvent partnerships work best when attendees get something genuinely valuable out of it, as well as the organiser and the sponsor, and \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://productatheart.com/\"\u003eProduct at Heart\u003c/a\u003e does a particularly great job of putting together experiential packages that add value to the overall event.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/6l8SF1JVhBuOh_O9OLXrLwH3Mx1t3oa5TvfCyFNuA5M/rs:fit:3000:3000/fn:product-at-heart/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by82YmYzYzE4Njgx/Yzg4NTU4MzU3ODc0/NjE4ZjgxY2YwYS5w/bmc.png\"\u003e\u003cp\u003eBusinesses can choose to sponsor a curated library of books that get raffled off to attendees, or include their logo on the official photo booth prints, both of which have the potential to leave a lasting impression. And, while ice-cream might be a little more short-lived, it could offer a fun opportunity to come up with memorable custom flavour names!\u003c/p\u003e\u003cp\u003eA lot of conferences and events these days are thinking beyond logos on a banner, and offering more of these kinds of integrated sponsorship packages. And for good reason: it’s a win for all involved.\u003c/p\u003e\u003ch3\u003eMake it easy for sponsors to reach you\u003c/h3\u003e\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://saastock-europe.com/partner-with-us/\"\u003eSaaStock’s\u003c/a\u003e “Book your booth” button instantly opens up a link to book a call with their Sales Director, Daniel. Potential sponsors can even choose how long a timeslot they need.\u0026nbsp;\u003c/p\u003e\u003cimg src=\"https://images.vi.to/GMdzg4nd3NsBwm8DZTiDwCQi7KX1duiuTVAQdnmFdbs/rs:fit:3000:3000/fn:saastock-book-your-booth/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by9mZjdhYmJkNWEy/MzM0ODQyNWI0NDcy/ZDAyMWIyNTJkMy5w/bmc.png\"\u003e\u003cp\u003eThis shows that the organisers are willing to spend time up front building relationships with partners. On the potential sponsor’s part, this feels a lot more personal and like a stronger initial commitment than simply submitting a contact form. It also makes the process more transparent, as you know exactly when the call will happen rather than having to wait for a response.\u003c/p\u003e\u003ch3\u003eMake the sponsorship opportunity feel personal\u003c/h3\u003e\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://smashingconf.com/conferences\"\u003eSmashingConf\u003c/a\u003e does a great job of presenting the sponsorship proposal in a way that feels tailored to the individual partner. They use Notion to publish a private mini-site for each prospect. This page includes some universally applicable content, such as details of the conference and magazine, as well as content specific to the partner, like a breakdown of the benefits included in the selected package. The result is fun, informative, and a lot more inspiring than a generic PDF file.\u003c/p\u003e\u003cp\u003eThe below example is shared with permission. And we 💙 you too, Smashing!\u003c/p\u003e\u003cimg src=\"https://images.vi.to/1TWeAsRGJl695aez1kiZm1bAoFIuYikmImzab7QVhN4/rs:fit:3000:3000/fn:smashing/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by85ZDcyZmFkOTU3/ZmYxN2ViMTE4ZmEy/ODg5NDU4ODRmMi5w/bmc.png\"\u003e\u003ch3\u003eMix up your sponsorship calls to action\u003c/h3\u003e\u003cp\u003eAnother thing \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://saastock-europe.com/partner-with-us/\"\u003eSaaStock\u003c/a\u003e does is vary their calls to action. In different places on the sponsorship page, they have buttons saying “Apply to sponsor”, “Download prospectus”, and “Download sample attendee list”, all of which open up the contact form. They’re creating multiple opportunities to pique people’s interest and capture their contact details.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/vJoCjiguGO3qXB0Ij9XLeU7OqDUuFfY7Hnrccfwl5PE/rs:fit:3000:3000/fn:saastock-ctas/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by82YjgxMjEyNTg2/YmIxY2U1ZDg3MmM5/YmZmOWI2MGFjOS5w/bmc.png\"\u003e\u003cp\u003eIt’s tempting to just repeat yourself to hammer a point home, but finding new angles like this could make all the difference between someone deciding to click or not.\u003c/p\u003e\u003ch3\u003eShow sponsors that you care about their objectives\u003c/h3\u003e\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://event.toa.media/\"\u003eTech Open Air Berlin\u003c/a\u003e’s contact form puts the partner’s goals front and center, demonstrating an understanding that sponsors have different reasons to get involved. The ones they list range from brand awareness and recruiting to thought leadership and product showcase.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/6Hr_c-TRo8E3rfhf23tangAu63c-VLXDdmrg6kq5tbM/rs:fit:3000:3000/fn:toa-form/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by80NDQyZjZjNGJh/ZWM5YTU0YTAxMDg3/Yjk0MTE0YTVmMi5w/bmc.png\"\u003e\u003cp\u003eKnowing what sponsors want to get out of the partnership helps you channel your efforts in the right directions. And when those efforts pay off in a healthy return on investment for the partner, it’ll be much easier to win their repeat business.\u003c/p\u003e\u003ch3\u003eHelp sponsors visualise their presence at your event\u003c/h3\u003e\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://instant.so/blog/how-product-visualization-can-influence-buying-decisions\"\u003eConsumers are famously visual creatures\u003c/a\u003e. And, while a sponsorship package is harder to capture in a series of product photos than a pair of sneakers, there are still ways to help potential sponsors picture themselves at your event. \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.wearedevelopers.com/world-congress\"\u003eWeAreDevelopers World Congress\u003c/a\u003e takes place in a 40,000+ square meter space, so their sponsor deck includes a floor plan to help partners envision the practicalities of exhibiting.\u0026nbsp;\u003c/p\u003e\u003cimg src=\"https://images.vi.to/9MXcWccLXnmz9OJAGifk4syv4zyKPSHSKFEw7V47l5o/rs:fit:3000:3000/fn:screenshot-2024-09-19-at-09-23-49/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by85ZTMxN2EwY2Ux/ODA5ZWMyOGIwZDI4/ODU4NzI4M2NhYy5w/bmc.png\"\u003e\u003cp\u003eIt doesn’t have to be a floor plan specifically. It could be a virtual booth or merch generator, where sponsors can select their chosen product or size, and swap in their colours and logos. The idea is to go beyond a table or a bullet point list, and help sponsors get inspired about the experience of sponsoring your event by appealing to their senses.\u003c/p\u003e\u003ch3\u003eTie the sponsorship process into the vibe of your event\u003c/h3\u003e\u003cp\u003eSee if you can figure out a way to integrate sponsorship into your event brand and theme. \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://railsconf.org/\"\u003eRailsConf’s\u003c/a\u003e retro motif is applied to their sponsorship prospectus, where the back page looks like a vintage magazine mail-order form. It feels super on-brand and adds a sense of fun and whimsy to the proceedings.\u003c/p\u003e\u003cimg src=\"https://images.vi.to/g75RoyzjsEO8qDOpt-ZlX-EPkttOPQrv8BqpKmsMhwA/rs:fit:3000:3000/fn:railsconf-order-form/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by82MzAzMTExNDIw/OTNlMTI5ZGJiMmI2/NDVkMDMyOTVkZi5w/bmc.png\"\u003e\u003cp\u003eAnd you don’t have to stop at the application form. Any stage of the process could be tied into the theme. For an event with tropical vacation branding, instead of having bronze, silver and gold sponsorship levels, you could offer “Seaview Room, “Penthouse”, and “Private Island” packages. The process of building a sponsor package could mimic airline style upgrades. The confirmation screen could look like a boarding pass. Your exhibitor hall could be set up so that booths look like beachfront stalls. You get the idea…\u003c/p\u003e\u003cp\u003eObviously, time and budget constraints will play a role in how ambitious you get, but all this to say there are opportunities to get imaginative in integrating sponsorships into your event’s personality.\u0026nbsp;\u003c/p\u003e\u003ch3\u003eConclusion\u003c/h3\u003e\u003cp\u003eFive years ago, we published a \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://blog.tito.io/posts/event-sponsorship-proposal/\"\u003eround-up\u003c/a\u003e of our favourite sponsor decks. Since then, we’ve seen event organisers get even more creative, so who knows what new ideas they’ll be bringing to the table in another five years time! Hopefully this post gives you some food for thought in the meantime.\u003c/p\u003e","date_published":"2024-09-18T14:35:00Z"},{"id":"https://diva.pub/posts/you-should-go-to-conferences","title":"You should go to conferences","content_html":"\u003cp\u003eSophie Koonin perfectly captures why it's so valuable to attend conferences in her recent \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://localghost.dev/blog/you-should-go-to-conferences\"\u003eblog post\u003c/a\u003e, which we discovered courtesy of the \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://beyondtellerrand.com/newsletter\"\u003ebeyond tellerrand newsletter\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eIt also features a great round-up of conferences, including a bunch of Tito customers. 💙\u003c/p\u003e\u003cp\u003eAs she puts it:\u003c/p\u003e\u003cblockquote\u003e\u003cp\u003e\"Conferences are a fantastic way to not only broaden your horizons when it comes to your job and your skills, but also meet excellent people who might lead you to a new role, or new experiences.\"\u003cbr\u003e\u003c/p\u003e\u003c/blockquote\u003e\u003cp\u003eWe couldn't agree more.\u003c/p\u003e\u003cp\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://localghost.dev/blog/you-should-go-to-conferences/\"\u003eRead the full blog post\u003c/a\u003e\u003c/p\u003e","date_published":"2024-09-18T09:55:00Z"},{"id":"https://diva.pub/posts/meet-tito","title":"Meet Tito in a city near you","content_html":"\u003cp\u003eWe’re trying something new this autumn season: Doc, I, and some of the team will be at various events over the coming months and we’re organising small meetups and dinners, and maybe even some storytelling.\u003c/p\u003e\u003cp\u003eWe’ll organise at least one meetup at each place that you can RSVP to using the links below, but if you can't make it to that, feel free to get in touch and organise a one-to-one meeting. I for one love discovering new coffee shops.\u003c/p\u003e\u003cp\u003eMeeting customers in person isn't something we've done a lot of since—checks notes—2019.\u003c/p\u003e\u003cp\u003eWe’re eager to show and tell about all of the stuff we've been working on, and hearing from folks who are interested in sustainable, ethical businesses.\u003c/p\u003e\u003cp\u003eAll of the below events are Tito customers(of course). If you’re going to any of them, reach out and say hi!\u003cbr\u003e\u003cbr\u003eHere's where you'll be able to find us:\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eCopenhagen: 10th–12th September\u003c/strong\u003e\u003cbr\u003ePaul will be in Copenhagen for \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://techbbq.dk\"\u003eTechBBQ\u003c/a\u003e. Dinner on Tuesday evening for sure, and plenty of space to meet up otherwise. Register interest \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/n844uCqPKxLmEZ3hvv8VxiTJs6gnPref9mRqW3Gwui6Y\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eNew York: 7th–10th October\u003c/strong\u003e\u003cbr\u003eDoc will be in Manhattan for \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://smashingconf.com/ny-2024\"\u003eSmashing Conf NYC\u003c/a\u003e. Dinner will definitely be happening. Interested? Sign up \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/yuuDwsjsUwepPESvwSHJpkH131cdf436aJNBcWvDVZmf\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eLondon: 9th October\u003c/strong\u003e\u003cbr\u003ePaul will be in town for Intercom’s \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://pioneer.intercom.com\"\u003ePioneer\u003c/a\u003e event. It would be cool to meet up and show how Intercom have used some of our very latest work to create a bespoke event experience. Interested in joining a cosy dinner? Register interest \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/hbQh5MTYBexPD85SiBaRPw69ij4gxBKcxknRrHfzm8h2\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eEdinburgh: 24th October\u003c/strong\u003e\u003cbr\u003eBill and I will be attending \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://haggisruby.co.uk\"\u003eHaggisRuby\u003c/a\u003e and we'd love to organise a dinner on the evening of the event. Fancy dinner? Let us know \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/FFZ9Nxz1S6MpW1WrFGU7FC5vaNEwjKuiMvAsWXjQMko3\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eBrussels: 28th October\u003c/strong\u003e\u003cbr\u003eFour of us (me, Doc, Vicky, and Bill) will be en route to \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://smashingconf.com/antwerp-2024\"\u003eSmashingConf Antwerp\u003c/a\u003e. We’ll be co-hosting dinner with the folks from Aikido. Join us? Register \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/9CCPdRmKaG875vE1Lr9cnpEeX2nSg8uicrKy3DuW8jA8\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eLondon: 5th November, 12th November\u003c/strong\u003e\u003cbr\u003eDoc (at least) will be back in London for \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://leadingdesign.com\"\u003eLeading Design\u003c/a\u003e. Another cosy dinner opportunity, and then the following week I'll be back in town for \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://halfstackconf.com\"\u003eHalfStack\u003c/a\u003e. For the second meetup, we're going to invite some Tito customers to come and tell stories, so that should be a bit of fun. If you'd like to meet up in London for either of those, let us know \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/m2bjviEHPCtV1A1Zr1oBrJyXDc5mdUJcn98m8ZHUaUzA\"\u003ehere\u003c/a\u003e for the 5th, or \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/6ny451mzLSkojnZzFU6n8QHHM9jhEVYvdNDyEvffpnVG\"\u003ehere\u003c/a\u003e for the week of the 12th.\u003c/p\u003e\u003cp\u003e\u003cstrong\u003eDublin: end of November\u003c/strong\u003e\u003cbr\u003eWe haven't done anything directly or indirectly in Dublin since our office-warming in 2018, so it's high time we got out there and said hello. Sign up and we'll notify you when we're ready to go. If you're interested in hanging out in Dublin, let us know \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://meet.teamtito.com/invite/t1xA6sDiPbZG3BgzhiNRWkwiR4i5exUZWR4MskKiPanJ\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\u003cp\u003eSo that’s our movement until the end of the year. It would be cool to meet existing customers, potential customers, and folks who just want to hang out and talk!\u003c/p\u003e","date_published":"2024-09-06T18:00:00Z"},{"id":"https://diva.pub/posts/flirting-with-the-spammy-side","title":"Flirting with the spammy side","content_html":"\u003cp\u003eIt’s fair to say we’ve never been particularly good at “growth” here at Team Tito.\u003c/p\u003e\u003cp\u003eGrowth, that is, from the economic perspective: revenue, revenue, revenue, money, money, money.\u003c/p\u003e\u003cp\u003eI feel like I’ve grown a lot as a person in the last ten years, but the bottom line doesn’t care about that.\u003c/p\u003e\u003cp\u003eThere are lots of ways to attempt to pursue increasing revenue: writing blog posts and sharing them to attract folks, try to put remarkable features into your product so that folks talk about it, curate personal networks and ask folks you trust to help, or: cold outreach.\u003c/p\u003e\u003cp\u003eCold outreach can be effective, which is why every other day, a message from a person you never heard of likely ends up in your inbox. And in general, if something “works”, \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://daringfireball.net/linked/2024/08/28/messages-political-spam\"\u003epeople will keep doing it\u003c/a\u003e. It’s really annoying.\u003c/p\u003e\u003cp\u003eThe problem with “it works” is that it leads to “everyone is doing it”, and the problem with “everyone is doing it” leads otherwise ethically-minded folks to walk into scenarios where they unwittingly cross their own lines for acceptable marketing behaviour.\u003c/p\u003e\u003cp\u003e\u003cem\u003e(enter me)\u003c/em\u003e\u003c/p\u003e\u003cp\u003eI’m not gung-ho on creating what folks call hypergrowth for Tito. That said, I do have my ambitions. In business terms, revenue is a metric of health, and increased revenue can lead to an increase in profits and thereby create independence and optionality. Money matters!\u003c/p\u003e\u003cp\u003eAnd so, when I spotted a customer using Tito that didn’t look like most of our other customers, I naturally thought “I should email more folks like this and tell them that Tito exists!”. I researched a whole bunch of “lookalikes” and crafted an email in my own style: personal, referencing the customer, and letting them know about our pricing.\u003c/p\u003e\u003cp\u003eWithin 10 minutes of sending the outreach, I had an email from the reference customer, who had been told their name had been used. It was polite, but matter of fact: “Please stop sending spam”.\u003c/p\u003e\u003cp\u003eMy initial reaction was shock. Me? Sending spam? But, but, but it was from my personal account. It had a friendly note. It had a discount!\u003c/p\u003e\u003cp\u003eAnd then I realised it: I was emailing folks, marketing my company’s services, without their consent, sending the same message to a bunch of people at once.\u003c/p\u003e\u003cp\u003eIt was spam.\u003c/p\u003e\u003cp\u003eI was horrified at myself, and immediately stopped in my tracks. I’ve held off doing any kind of outreach based marketing for years because of stuff like this. And yet, somehow, because of the way “everyone does it” and because I somehow felt I was making it personal, I felt I was exempted from taking the care to build relationships based on trust. I was the really annoying guy.\u003c/p\u003e\u003cp\u003eThere are loads of ways to reach potential customers that don’t involve sending a message to someone who has never given you permission to contact them by email. To do it in a high-trust way requires care, attention-to-detail, and a bit of effort. Unfortunately for me, those eluded me that day, and the consequence is a reduction of trust with the original customer.\u003c/p\u003e\u003cp\u003eWe’ve decided to resume our implicit “no cold outreach” policy with an explicit policy that sets the bounds of the kind of outreach we will do to potential customers. We’re eager to tell our story and have our products—which we think are great!—find the folks who will find them valuable.\u003c/p\u003e\u003cp\u003eBut not spam.\u003c/p\u003e","date_published":"2024-08-30T11:30:00Z"},{"id":"https://diva.pub/posts/nine-years-of-team-tito","title":"Nine Years of Team Tito","content_html":"\u003cp\u003eDoc and I received the certificate of incorporation for Team Tito Limited on the 11th August 2015, a few months before moving in to a new office, and four and a half years after I wrote the first line of code. \u003c/p\u003e\n\n\u003cp\u003eThat’s 1/3 of my life working on this product.\u003c/p\u003e\n\n\u003cp\u003eIreland’s companies office has a quirk where generic names like \u0026quot;Tito Limited\u0026quot; are tricky to register. Doc had been watching the Tour de France that summer and I had overheard repeated references to \u0026quot;Team Sky\u0026quot;, referring I guess to one of the cycling teams. \u0026quot;Team Tito\u0026quot; had a nice ring to it, and so it came to be.\u003c/p\u003e\n\n\u003cp\u003eThe incorporation led to a number of practical benefits to us in terms of being perceived as \u003cem\u003eserious\u003c/em\u003e, but it actually marked a more significant milestone: we were earning enough through fees to cover (modest) full-time salaries for the whole team. Before that, we were doing a mix of contracting work to fill in the gaps. In 2016, we were able to wind down work on everything other than Tito.\u003c/p\u003e\n\n\u003cp\u003eA lot has happened since, and we’ve tried this, that and the other approaches, but the primary goal hasn’t really changed: to build a healthy, sustainable, profitable company.\u003c/p\u003e\n\n\u003cp\u003eWe’re doing pretty well with those goals.\u003c/p\u003e\n\n\u003cp\u003eI can’t imagine a more healthy working relationship than the one we’ve found. We’ve figured out a delicate balance of being able to ship quality work on a regular rhythm without burnout. If one of us needs a bit of time to deal with the push and pull of life, we support each other and keep things running.\u003c/p\u003e\n\n\u003cp\u003eIn terms of sustainability, as we enter our tenth year of incorporation, things are looking good. Apart from during Covid (where usage didn\u0026#39;t drop, but fees did, by a lot), our revenues have grown every year since incorporation. We’re an ambitious team and always want to do better, but so far, so good.\u003c/p\u003e\n\n\u003cp\u003eFinally, in 2023, we made a profit. Achievement unlocked.\u003c/p\u003e\n\n\u003cp\u003eSo: what’s next? Fundamentally, it’s to continue serving our values: integrity, excellence, and delight. We’re continuing to improve our core product all the time. \u003ca href=\"https://vi.to\" target=\"_parent\"\u003eVito\u003c/a\u003e didn’t become the massive hit that we had hoped it would, but we’re still proud of what we built, and have some ideas on how to refine it. And last year we started a new project: \u003ca href=\"https://io.ti.to\" target=\"_parent\"\u003eIO\u003c/a\u003e, specifically for invitation-only events.\u003c/p\u003e\n\n\u003cp\u003eThere’s lots going on: setting us up for a fine 10 year anniversary next year.\u003c/p\u003e\n","date_published":"2024-08-16T11:23:00Z"},{"id":"https://diva.pub/posts/this-last-this-next-thing","title":"This Last This Next Thing","content_html":"\u003cp\u003eLast month, I co-hosted \u003ca href=\"https://2024.thisnextthing.com/\" target=\"_parent\"\u003eThis Next Thing\u003c/a\u003e, the second iteration of an event that started last year.\u003c/p\u003e\n\n\u003cp\u003eI really love the concept of the event, and I\u0026#39;d like to share a few things that I think really worked.\u003c/p\u003e\n\n\u003ch3\u003eReciprocal speakers\u003c/h3\u003e\n\n\u003cp\u003eProbably my favourite \u0026quot;innovation\u0026quot; is the idea of reciprocal speakers. The idea here was to take advantage of strong relationships we as organisers have built up over the years with people that have done really well financially and want to give back in some sense.\u003c/p\u003e\n\n\u003cp\u003eQuite simply, it\u0026#39;s an individual sponsorship: the person funds their own tickets and trip, and also nominates and sponsors a person of their choosing.\u003c/p\u003e\n\n\u003cp\u003eIt works really well because instead of choosing an underprivileged person \u003cem\u003einstead\u003c/em\u003e of a more familiar face, it acknowledges the power that people successful under the status quo have, and puts them alongside new voices that they have a part in boosting.\u003c/p\u003e\n\n\u003ch3\u003eStarter cities\u003c/h3\u003e\n\n\u003cp\u003eAnother great concept that worked even better this year is the idea of starter cities. This was my attempt to solve the \u0026quot;night before\u0026quot; problem that I\u0026#39;ve experienced at conferences so many times. So often I find myself flying to a city the night before an event and wanting to hang out, but having no \u0026quot;in\u0026quot; as it were. Sometimes there are drinks, but without any formal introductions, it\u0026#39;s easy to get lost in a sea of people who already know each other.\u003c/p\u003e\n\n\u003cp\u003eThis Next Thing, being in the Swiss Alps, didn\u0026#39;t have an obvious airport to fly in to, so we gave people the choice of Zurich, Innsbruck, or Milan, all roughly equidistant from the venue.\u003c/p\u003e\n\n\u003cp\u003eFolks met up the day before travelling together up the mountains for facilitated small group activities, meals, and then coming together as a group for drinks at the end of the day. There are lots of ways to iterate this idea, but it meant that before you got to the main event, there are already numerous chances to pick up buddies.\u003c/p\u003e\n\n\u003ch3\u003eMixing up formats\u003c/h3\u003e\n\n\u003cp\u003eEarly on in organising, we identified three types of sessions to roughly categorise things:\u003cbr\u003e\n- audience sessions (e.g. traditional talks)\u003cbr\u003e\n- active participation sessions (e.g. roundtable discussions, coding workshops, escape room)\u003cbr\u003e\n- passive participation sessions (e.g. food workshops, coffee workshops)\u003c/p\u003e\n\n\u003cp\u003eAdditionally, I wanted to ensure that there was a balance on the schedule of times where there was only one thing scheduled, vs. times where there were several things scheduled. And for anything that had a limited participation, there ought to be multiple instances so that folks could pick and choose as they saw fit.\u003c/p\u003e\n\n\u003cp\u003eThe idea is that everyone has different needs when attending an event. Some folks just want to sit back and watch stuff. Some folks want to really participate actively. And some folks just want to hang out. The ideal schedule will balance all these needs and provide enough to satisfy the various needs of different participants.\u003c/p\u003e\n\n\u003cp\u003eThis year’s TNT was structured with two short talks on Monday evening after dinner. Tuesday started at 10am with 90 minutes of group keynotes followed by a long lunch. The afternoon was async sessions, with two \u0026quot;main stage\u0026quot; sessions spaced out in the afternoon: an AMA with the keynotes, and lightning talks. At the same time, we had an escape room, a coffee workshop, a food and drink tasting workshop, several roundtable discussions and even yoga and a tea ceremony built in.\u003c/p\u003e\n\n\u003cp\u003eFor me, I love the idea that folks can move to different activities according to their own preferences, interests and energy levels.\u003c/p\u003e\n\n\u003ch3\u003eAnd so...\u003c/h3\u003e\n\n\u003cp\u003eOrganising TNT has been a wonderful experience. I\u0026#39;ve learned so much and had a chance to iterate on some of these strong ideas in event design.\u003c/p\u003e\n\n\u003cp\u003eI\u0026#39;m looking forward to more iteration in the future!\u003c/p\u003e\n","date_published":"2024-07-11T12:51:00Z"},{"id":"https://diva.pub/posts/product-managing-house-renovation","title":"Product managing my house renovation","content_html":"\u003cp\u003eIn May, after five months of back and forth with builders, electricians, plumbers, fitters and decorators, our new house was finally ready to move into. \u003c/p\u003e\n\n\u003cp\u003eAnd now that the dust has settled (and been thoroughly vacuumed), I’m ready to share some parallels I noticed between project managing a house renovation, and product managing our apps.\u003c/p\u003e\n\n\u003ch3\u003eIt’s hard not having the skills or expertise yourself\u003c/h3\u003e\n\n\u003cp\u003eI had a pretty clear vision for our home, but none of the requisite skills to pull it off. Honestly, I get a bit nervous at the idea of even putting a picture up by myself! Overseeing a house renovation without having expertise in any of the trades involved is intimidating, but it’s not so different from project managing the development of an app as a non-engineer. You can educate yourself about the technicalities as much as possible to identify what questions to ask, and help you to make informed decisions, but ultimately you need to rely on the professionals and trust their insight and judgement. They are the experts in their field, and have the experience and knowledge to let you know whether some aspects of your vision just may not be feasible or appropriate. Which reminds me…\u003c/p\u003e\n\n\u003ch3\u003eStrong vision is key\u003c/h3\u003e\n\n\u003cp\u003eGood luck managing any project (house, software or otherwise) without some kind of vision. The vision helps you plan, and the plan helps you execute. The simplest way I’ve come to think of distilling a vision is to figure out what specific problem we’re trying to solve, whether that’s how to make a living room feel cosy, or how to allow event organisers to sell add-ons to tickets. Knowing what problem you’re trying to solve helps you identify and capture all the relevant requirements and constraints, and from there you can make a plan for delivery. Even once you have a plan in place though, it’s ultimately the vision that keeps you focused, aids in decision making, and helps you navigate obstacles as they arise. Speaking of which…\u003c/p\u003e\n\n\u003ch3\u003eYou need to be ready to compromise and pivot\u003c/h3\u003e\n\n\u003cp\u003eWhen I was initially planning my house renovation, I wanted to pull down the existing conservatory and extend the kitchen. The architect advised us that a project of this scale would cost tens of thousands of pounds and potentially take up to 9 months from start to finish. This was money and time we didn’t really have. So we pivoted. We knocked through from the living room to the kitchen instead, which gave us the open space we had identified that we wanted in our vision, while being much cheaper and only taking a few weeks. There were lots of smaller changes and compromises we made as we went along, and this is true of product management as well. As a team, we often need to pivot in response to user feedback or technical constraints. We sometimes compromise on scope for a particular phase of a project based on how much resource we have at that moment. It’s a constant balancing act to adapt gracefully to changing circumstances while finding solutions that align with our stated vision.\u003c/p\u003e\n\n\u003cp\u003eThere are many more parallels I could draw: the importance of managing timelines, budgets, and expectations; cross-functional collaboration and coordinating different departments to reduce bottlenecks; user testing and quality assurance; you get the idea…\u003c/p\u003e\n\n\u003cp\u003eAs with our products, our house isn’t “done”, nor will it ever be. Now we’re living in it, we’ll continue to iterate, and to identify areas we want to improve or even change. That’s part of the fun and what keeps things interesting and never stagnating. With that said, the pace has slowed considerably on the house front for now. I definitely don’t miss the intensity of managing a house renovation project on top of my regular Tito work, and I’m glad to be getting back to focusing on what I’m (hopefully) best at!\u003c/p\u003e\n","date_published":"2024-07-09T20:13:00Z"},{"id":"https://diva.pub/posts/tito-changelog-q2-2024","title":"Tito Changelog: April to June 2024","content_html":"\u003cp\u003eThe main highlight from this quarter is our new beta \u003ca href=\"https://blog.tito.io/posts/new-feature-activity-groups\" target=\"_parent\"\u003eActivity Groups\u003c/a\u003e feature, which is perfect for allowing attendees to select from different workshops and other options included with their ticket. This is an often-requested feature and we\u0026#39;re over the moon to have finally built it!\u003c/p\u003e\n\n\u003cp\u003eWe\u0026#39;ve also made it so that calendar invitations now get accepted automatically, and we\u0026#39;ve made a slew of usability and accessibility improvements.\u003c/p\u003e\n\n\u003cp\u003eFor a full list of what we\u0026#39;ve shipped over the last 3 months, read on…\u003c/p\u003e\n\n\u003ch2\u003eApril\u003c/h2\u003e\n\n\u003ch3\u003eDashboard\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003eFix for serving apple-developer-merchantid-domain-association for Stripe connections\u003c/li\u003e\n\u003cli\u003eFix Google calendar integration\u003c/li\u003e\n\u003cli\u003eUpdate humans.txt\u003c/li\u003e\n\u003cli\u003eDisplay a validation error instead of failing silently if someone enters a donation amount with a currency symbol or comma as a decimal separator\u003c/li\u003e\n\u003cli\u003eUpdate French translations\u003c/li\u003e\n\u003cli\u003eDon\u0026#39;t make 3rd party email field mandatory in Data Protection settings\u003c/li\u003e\n\u003cli\u003eFix CSS for account timeline\u003c/li\u003e\n\u003cli\u003eIntroduce Option kind of activity in preparation for activity groups feature\u003c/li\u003e\n\u003cli\u003eLet organisers give people a list of optional activities to choose from using activity groups\u003c/li\u003e\n\u003cli\u003eCope with multiple activities per ticket in export\u003c/li\u003e\n\u003cli\u003eDon\u0026#39;t hide questions on edit attendee form when the activity groups feature is not enabled\u003c/li\u003e\n\u003cli\u003eIf an option activity has chosen tickets already display warning if changing kind to automatic and block if changing to internal\u003c/li\u003e\n\u003cli\u003eHook up activity counters to take activities chosen from activity groups into account\u003c/li\u003e\n\u003cli\u003eCheckout UI improvements\u003c/li\u003e\n\u003cli\u003eFix release title font size bug\u003c/li\u003e\n\u003cli\u003eStyle activity groups in Checkout UI\u003c/li\u003e\n\u003cli\u003eMake sure attached optional activities are preselected when opening the edit activity group form\u003c/li\u003e\n\u003cli\u003eEnsure payment instructions appear below the payment instruction heading in invoice\u003c/li\u003e\n\u003cli\u003eLet organisers set a default question order\u003c/li\u003e\n\u003cli\u003eReplace Boaty McBoatface placeholder name with Jane Smyth (it wasn\u0026#39;t going to stay topical forever!)\u003c/li\u003e\n\u003cli\u003eImprove check-in app instructions\u003c/li\u003e\n\u003cli\u003eFix payment type for invoice orders\u003c/li\u003e\n\u003cli\u003eUpgrades shouldn\u0026#39;t disappear from the list if you change the locale of your event\u003c/li\u003e\n\u003cli\u003eAdd chosen activities to calendars\u003c/li\u003e\n\u003cli\u003e24-hour clock for German locale\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003eMay\u003c/h2\u003e\n\n\u003ch3\u003eDashboard\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003eFix date range in Slovak locale\u003c/li\u003e\n\u003cli\u003eDon\u0026#39;t fall over if the subject of a message is nil\u003c/li\u003e\n\u003cli\u003eThe reassign ticket button should have type \u0026#39;button\u0026#39;, otherwise the form is submitted when enter key is pressed\u003c/li\u003e\n\u003cli\u003eFix building the dashboard image on CI\u003c/li\u003e\n\u003cli\u003eRemove the \u003ccode\u003eregistration.started\u003c/code\u003e webhook and update API docs\u003c/li\u003e\n\u003cli\u003eMove the integration tests to system tests\u003c/li\u003e\n\u003cli\u003eAllow the system tests to be run locally using a remote selenium image\u003c/li\u003e\n\u003cli\u003eEnsure validation errors display on globalized textarea fields\u003c/li\u003e\n\u003cli\u003eRemove ability to go live from Settings \u0026gt; Basics section and ensure consistent behaviour when going live via Go Live page and via API request\u003c/li\u003e\n\u003cli\u003eDate fixes for Irish locale\u003c/li\u003e\n\u003cli\u003ePass order metadata to Stripe\u003c/li\u003e\n\u003cli\u003eMake sure \u003ccode\u003eevent_title\u003c/code\u003e variable is available in message subject\u003c/li\u003e\n\u003cli\u003eLet organisers attach questions to optional activities\u003c/li\u003e\n\u003cli\u003eLet organisers set a custom Invoice Label setting in Settings \u0026gt; Invoicing\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch2\u003eJune\u003c/h2\u003e\n\n\u003ch3\u003eDashboard\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003eAdd close button to the modal for joining a waiting list\u003c/li\u003e\n\u003cli\u003eThe event timeline uses the incorrect host name when linking to event homepages\u003c/li\u003e\n\u003cli\u003eCheckout accessibility audit\n\n\u003cul\u003e\n\u003cli\u003eSet page titles for all pages\u003c/li\u003e\n\u003cli\u003eSet the lang attribute on the html element to either en or the event locale requested\u003c/li\u003e\n\u003cli\u003eAllow zooming on mobile\u003c/li\u003e\n\u003cli\u003eFix the heading levels throughout checkout to be consistent and ordered\u003c/li\u003e\n\u003cli\u003eEnsure the password required field has an associated label and fix the button styling\u003c/li\u003e\n\u003cli\u003eAdd alt text for the google map and ticket qr code\u003c/li\u003e\n\u003cli\u003eAdjust the colours to use accessible colours from our colour palette\u003c/li\u003e\n\u003cli\u003eAdjust the widget grey on the widget so that links on headings pass colour contrast checks\u003c/li\u003e\n\u003cli\u003eUpdate the accessibility statement date on the design guide\u003c/li\u003e\n\u003cli\u003eBold the organiser terms link in the data consent statement to pass link contrast accessibility checks\u003c/li\u003e\n\u003cli\u003eFix the question field ids so they are attached to the labels correctly\u003c/li\u003e\n\u003cli\u003eSet the role correctly for the widget modal\u003c/li\u003e\n\u003cli\u003eAdd missing discernible text for the close cross on the modal\u003c/li\u003e\n\u003cli\u003eFix landmarks throughout the widget\u003c/li\u003e\n\u003cli\u003eAdd discernible text for screen readers for the sharing links\u003c/li\u003e\n\u003cli\u003eAdd discernible text for screen readers for the decrease and increase quantity buttons\u003c/li\u003e\n\u003cli\u003eMissing alt text on event images on event homepage\u003c/li\u003e\n\u003cli\u003eEnsure colour contrast passes for sold out releases on event homepage\u003c/li\u003e\n\u003cli\u003eEnsure colour contrast passes for expired releases on event homepage\u003c/li\u003e\n\u003cli\u003eUse the correct green for the discount code submit button.\u003c/li\u003e\n\u003cli\u003eRemove $clrs-grey and $clrs-green as they aren\u0026#39;t required anymore.\u003c/li\u003e\n\u003c/ul\u003e\u003c/li\u003e\n\u003cli\u003eAdd date filters to account tickets plus export so it can be exported in batches if a particular account has a large number of tickets\u003c/li\u003e\n\u003cli\u003eRemove the escape key shortcut for closing the widget without warning\u003c/li\u003e\n\u003cli\u003eAuto-add calendar invitations in ticket emails\u003c/li\u003e\n\u003cli\u003eAdd disclosure triangles to activity groups\u003c/li\u003e\n\u003cli\u003eMark unanswered required questions in red and jump to top to show error message\u003c/li\u003e\n\u003cli\u003eEnsure we give an error message when the incorrect association parameter is given via the API\u003c/li\u003e\n\u003cli\u003eTidy up how we organise error classes in Tito and respond to them\u003c/li\u003e\n\u003cli\u003eTicket screen tidy\u003c/li\u003e\n\u003cli\u003eFix close button layout bug\u003c/li\u003e\n\u003cli\u003eUpdate Notes from the organiser to be sentence case not title case to match the rest of the UI\u003c/li\u003e\n\u003cli\u003eRedeemed RSVP fix\u003c/li\u003e\n\u003cli\u003eFix Incorrect interpolation key in Czech translation for \u003ccode\u003ecustom_receipt_label_number\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eShow Italian checkout fields in webhooks\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003ecustom\u003c/code\u003e label to custom exports\u003c/li\u003e\n\u003c/ul\u003e\n","date_published":"2024-07-01T09:47:00Z"},{"id":"https://diva.pub/posts/invites-auto-added-to-calendar","title":"Invites now automatically added to attendee's calendars","content_html":"\u003cp\u003eHere's a small but mighty quality-of-life improvement to make sure attendees don't miss the calendar file.\u003c/p\u003e\u003cp\u003eNow, where available, the ICS file will be automatically added to your attendees' calendars without any action needed from them. \u003c/p\u003e\u003cp\u003eEvent details including time, date, and location will instantly appear in their calendar app.\u003c/p\u003e\u003cp\u003eIt's a time saver for your attendees, and also helps keep your event front of mind. Just another way we're trying to help simplify the event management process for organisers and attendees.\u003c/p\u003e\u003cp\u003eFor free events in particular, we hope this change will promote better attendance rates and reduce the risk of last-minute confusion or missed events.\u003c/p\u003e\u003cp\u003eTo learn more about this feature and how it works, check out our \u003ca target=\"_new\" rel=\"noopener\" href=\"https://help.tito.io/en/articles/9744485-how-can-attendees-add-the-event-to-their-calendar\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e","date_published":"2024-06-06T12:32:00Z"},{"id":"https://diva.pub/posts/rtfm-vs-learning-by-doing","title":"RTFM vs Learning by Doing","content_html":"\u003cp\u003eI often write help articles for our apps but, even as I’m doing it, I hope most users won’t need to refer to them. \u003c/p\u003e\n\n\u003cp\u003eThe goal is for our software to be intuitive enough that you can easily figure it out as you go, without needing any experience or specialist knowledge. \u003c/p\u003e\n\n\u003cp\u003eIn my mind, documentation is just there as a backup if you get really stuck.\u003c/p\u003e\n\n\u003cp\u003eOf course, everyone learns differently. Some people don’t like to dive headfirst into things like I do, instead preferring to RTFM (read the effin\u0026#39; manual) ahead of time. I’ve always been far too impatient to do that, but a recent experiences has made me rethink my approach.\u003c/p\u003e\n\n\u003cp\u003eI’ve been a casual user of design software \u003ca href=\"https://www.figma.com/\" target=\"_parent\"\u003eFigma\u003c/a\u003e for a few years at this point, after first having been exposed to it while amazing designer \u003ca href=\"https://multitudes.coop/about/\" target=\"_parent\"\u003eDebs Durojaiye\u003c/a\u003e was contracting with us. But, rather than do any research into how Figma worked, or ask Debs about her workflow, I just sort of looked at the resulting designs and reverse-engineered how I thought they might have been put together by clicking around the UI and experimenting with features; ✨vibes-led learning✨, if you will.\u003c/p\u003e\n\n\u003cp\u003eNeedless to say, I picked up some bad habits early on. Sure, I could cobble together a mockup, but my approach was hardly optimal or efficient. The thing is, I didn’t realise this. There were times I even internally rolled my eyes at the fact that certain things were so “awkward” in Figma. It wasn’t until a couple of months ago, when I needed to look up how to do a very specific thing, that I decided to sit down and actually watch a Figma tutorial (\u003ca href=\"https://www.uxtoast.com/ui-design/figma-get-started\" target=\"_parent\"\u003ethis one\u003c/a\u003e, to be precise), and I was shocked by how little I actually understood about how the app worked. My learning by doing approach hadn’t worked this time. But why?\u003c/p\u003e\n\n\u003cp\u003eWhat I’ve realised is that learning by doing works well when you already kind of \u003cem\u003eknow\u003c/em\u003e what you’re doing. When I first started using \u003ca href=\"https://www.notion.so/product\" target=\"_parent\"\u003eNotion\u003c/a\u003e, the learning curve wasn’t too steep because I was already really familiar with word-processing software. It wasn’t until I got more into using their database features that I needed to refer to documentation, because this was outside of my area of familiarity. The mistake I made with Figma was not realising how much of a novice I really was. I’m not a designer, and I don’t have a ton of experience using programmes like Photoshop or Sketch, so a lot of the conventions and terminology were unfamiliar to me.\u003c/p\u003e\n\n\u003cp\u003eWithin just a couple of tutorials, I discovered basic but powerful features, capabilities and shortcuts I didn’t realise Figma had, because I didn’t know what I was looking for. Figma’s UI makes use of a lot of graphical elements like icons, some of which I’d worked out along the way, but the rest of which my mind sort of blurred out as being irrelevant to my needs, when in fact they are really helpful! It started to dawn on me how much time I’d probably wasted by not stopping to RTFM first.\u003c/p\u003e\n","date_published":"2024-06-04T15:11:00Z"},{"id":"https://diva.pub/posts/custom-invoice-label","title":"Set a custom invoice label","content_html":"\u003cp\u003eIt's been requested many times by organisers to be able to override the default \"Receipt\" title. \u003c/p\u003e\u003cp\u003eNow you can rename it Invoice, Statement, or whatever else you like.\u003c/p\u003e\u003cp\u003eThis is particularly useful if the authorities in your region have specific legal or accounting requirements around invoice labelling. \u003c/p\u003e\u003cp\u003eWe hope this change will make it easier for organisers to comply with local laws and make financial reporting smoother for both organisers and attendees.\u003c/p\u003e\u003cp\u003eRead the instructions in our \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://help.tito.io/en/articles/9744002-can-i-set-a-custom-title-on-the-receipt\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e","date_published":"2024-05-30T11:39:00Z"},{"id":"https://diva.pub/posts/metadata-and-stripe","title":"Metadata and Stripe","content_html":"\u003cp\u003eDid you know you can store metadata with each order on Tito? There are a few different ways of doing that:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e  Type it in manually in our UI\u003c/li\u003e\n\u003cli\u003e  Pass it in as an attribute in the \u003ca href=\"https://ti.to/docs/api/widget#tito-widget-v2-prefill-data\" target=\"_parent\"\u003ewidget markup\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e  Using \u003ca href=\"https://ti.to/docs/api/admin/3.1#version-3-1\" target=\"_parent\"\u003eour API\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e  Automatically include URL parameters\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eThat last approach is the one I want to talk about here.\u003c/p\u003e\n\n\u003ch2\u003eUTM parameters on the hosted event homepage\u003c/h2\u003e\n\n\u003cp\u003eWe can capture \u003ca href=\"https://en.wikipedia.org/wiki/UTM_parameters\" target=\"_parent\"\u003eUTM parameters\u003c/a\u003e for you. Go to the event homepage settings and enable metadata:\u003c/p\u003e\n\n\u003cp\u003e\u003cimg src=\"https://images.vi.to/_LKn-JetsfLmHK0SrSXQ4vDOHvyhqV1x_nR5xxrvydo/rs:fit:1200:1200/aHR0cHM6Ly91cGxv/YWRzLWNkbi52aS50/by83ZDY4NDcwNzZk/Y2Y2NGYwZmY0NWE4/MDg0NzA3MTI3Yi5w/bmc.png\" alt=\"\"\u003e\u003c/p\u003e\n\n\u003cp\u003eAny of those parameters are then automatically passed to the order. For example:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003ehttps://ti.to/{account}/{event}?utm_source=blog\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003ch2\u003eWidget\u003c/h2\u003e\n\n\u003cp\u003eYou get more control with the widget and can capture any parameter you want. For UTM, for example:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003e\u0026lt;tito-widget\n  event=\u0026quot;{account}/{event}\u0026quot;\n  save-metadata-parameters=\u0026quot;utm_*\u0026quot;\n  \u0026gt;\u0026lt;/tito-widget\u0026gt;\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eYou an use a wildcard or a comma separated list of parameters, e.g. \u003ccode\u003e\u0026quot;affiliateId,campaignId\u0026quot;\u003c/code\u003e.\u003c/p\u003e\n\n\u003cp\u003eRead more in our \u003ca href=\"https://ti.to/docs/api/widget/#tito-widget-v2\" target=\"_parent\"\u003ewidget documentation\u003c/a\u003e.\u003c/p\u003e\n\n\u003ch2\u003eStripe\u003c/h2\u003e\n\n\u003cp\u003eThat metadata will automatically be combined with the metadata we already send to Stripe so you can analyse that with third party tools. Here\u0026#39;s some of the metadata we already send to Stripe:\u003c/p\u003e\n\n\u003cpre\u003e\u003ccode\u003etito_event_title\ntito_event_start_date\ntito_event_end_date\ntito_registration_reference\ntito_payment_id\ntito_registration_id\ntito_registration_slug\ntito_registration_name\ntito_registration_email\ntito_registration_url\ntito_registration_tax\ntito_registration_company\ntito_registration_release_slugs (Array)\ntito_registration_release_titles (Array)\ntito_registration_release_quantities (Array)\n\u003c/code\u003e\u003c/pre\u003e\n\n\u003cp\u003eAny parameters you capture will be appended to that list (without the \u003ccode\u003etito_\u003c/code\u003e prefix).\u003c/p\u003e\n","date_published":"2024-05-21T15:21:00Z"},{"id":"https://diva.pub/posts/free-range-dates","title":"Design challenge: Date ranges","content_html":"\u003ch3\u003eSimple to start\u003c/h3\u003e\n\n\u003cp\u003eDate ranges are one of those simple things that get more complicated the more you dig into them. Let’s start simple:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1:00pm, April 30th, 2024 — 5:00pm, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eThat’s a bit of a mouthful. There’s no need to repeat everything.\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1:00pm — 5:00pm, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eAnd maybe we can make it easier to read by omitting the minutes when they are zero.\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1pm — 5pm, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eDo we need to repeat “pm”?\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1 — 5pm, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eGood. That’s concise and readable.\u003c/p\u003e\n\n\u003ch3\u003eRules\u003c/h3\u003e\n\n\u003cp\u003eWe already have some rules:\u003c/p\u003e\n\n\u003cul\u003e\n\u003cli\u003e  Put the times together if it’s all on one day\u003c/li\u003e\n\u003cli\u003e  Omit the minutes if they are zero\u003c/li\u003e\n\u003cli\u003e  Only mention the meridian once if it is the same for both the start and end time\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eWhat if it spans two days?\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1pm, April 29th, 2024 — 5pm, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eWe don’t need to repeat \u0026quot;April\u0026quot; and \u0026quot;2024\u0026quot;:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1pm, 29th — 5pm, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003ch3\u003eMore rules\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003e  Only mention the year once if it’s the same for both\u003c/li\u003e\n\u003cli\u003e  Same for month\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eAnd we cope with exceptions:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e1pm, 31st December, 2024 — 5pm, 1st January, 2025\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eOK, we now have a system in place that copes with any date range but we need to consider the 24-hour clock which many locales prefer. We no longer have meridians but meridians do give us a clue about which part of the text relates to the time. For example, if we switch to 24-hour clock and have:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e13 — 17, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eIt’s a bit confusing. Is that the 13th, 17th or 30th of April? We can add an “h” to make it clearer:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e13h — 17h, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eOr always mention the minutes?\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e13:00 — 17:00, April 30th, 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003ch3\u003eMore rules\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003e  Add a suffix if using the 24-hour clock and omitting the minutes\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003cp\u003eWhat about translations for locales? For instance, let’s consider German:\u003c/p\u003e\n\n\u003cblockquote\u003e\n\u003cp\u003e13 — 17 Uhr, 1. Januar 2024\u003c/p\u003e\n\u003c/blockquote\u003e\n\n\u003cp\u003eThe day-month-year order has changed, the day takes a “.” suffix, we have the German word for January and we use the “Uhr” to reference the “hour” instead of \u0026quot;h\u0026quot;.\u003c/p\u003e\n\n\u003ch3\u003eMore rules\u003c/h3\u003e\n\n\u003cul\u003e\n\u003cli\u003e  Change everything if we\u0026#39;re using a different locale\u003c/li\u003e\n\u003cli\u003e  Make things concise but readable\u003c/li\u003e\n\u003cli\u003e  Display information correctly no matter what language you prefer\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003ch3\u003eConclusion\u003c/h3\u003e\n\n\u003cp\u003eHere at Tito, we’ve been wrangling date ranges for something like 12 years and we’re still trying to get it right.\u003c/p\u003e\n","date_published":"2024-04-30T15:36:00Z"},{"id":"https://diva.pub/posts/new-feature-activity-groups","title":"New feature: Let attendees select from optional activities like workshops","content_html":"\u003cp\u003eWe've heard many times that folks would love to be able to add workshops and other options to tickets for attendees to choose from.\u003c/p\u003e\r\n\r\n\u003cp\u003eStarting today, this is possible in Tito!\u003c/p\u003e\r\n\r\n\u003cp\u003eActivity groups allow you to group together several option type Activities, and attach them to tickets for attendees to select from. This is useful for when you need attendees to choose between sessions happening at the same time, for instance.\u003c/p\u003e \r\n\r\n\u003cp\u003eI recorded a 4-minute video to show you how it works (click the icon in the lower-right to expand):\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\u003cvideo width=\"512\" height=\"288\" controls\u003e\r\n  \u003csource src=\"https://stream.mux.com/BJvkun4czVMTeSAB989d7j7VzgWNh4XjLB83qzgsDkc/high.mp4\" type=\"video/mp4\"\u003e\r\nVideo couldn't be loaded.\r\n\u003c/video\u003e\u003c/p\u003e\r\n\r\n\u003cp\u003eRead the \u003ca href=\"https://help.tito.io/en/articles/9178307-activity-groups\"\u003ehelp article\u003c/a\u003e to learn even more.\u003c/p\u003e \r\n\r\n\u003cp\u003eThe feature is in beta right now and will be available for everyone in the future. If you're interested in becoming a beta tester, contact \u003ca href=\"mailto:support@tito.io\"\u003esupport@tito.io\u003c/a\u003e and we'll enable it for you now!\u003c/p\u003e\r\n\r\n","date_published":"2024-04-25T19:44:00Z"},{"id":"https://diva.pub/posts/enforced-fun","title":"You can't force people to have fun","content_html":"\u003cp\u003eEvery Monday we have a whole-team Zoom call where we catch up on what’s going on with the business.\u003c/p\u003e\n\n\u003cp\u003eThe last one didn\u0026#39;t go that well…\u003c/p\u003e\n\n\u003cp\u003eI usually chair the meeting in my capacity as head of product (as it tends to lean pretty product-focussed), and I really enjoy being able to see everyone each week, as we all work remotely and it can be a long time between in-person visits.\u003c/p\u003e\n\n\u003cp\u003eLast Monday, I wanted to do something a bit different. \u003c/p\u003e\n\n\u003cp\u003eThe way leave and sickness had worked out over the prior couple of months, we hadn’t actually had a call with all six of us in attendance in a while. As this would be the first time we were all together, I thought it’d be fun to mark the occasion with a bit of pomp and circumstance. \u003c/p\u003e\n\n\u003cp\u003eSo I devised a short online quiz and surprised everyone with it at the start of the meeting. Let’s just say it didn’t quite go as I’d hoped… 😅\u003c/p\u003e\n\n\u003cp\u003eRather than what I assumed would be unanimous enthusiasm and gratitude, I was met with a mixed bag of responses ranging from tepid to disgruntled. \u003c/p\u003e\n\n\u003cp\u003eI blustered my way through the awkward moment with some “it’s only a bit of fun” placations, and we ended up completing the quiz — but it was a bit of a pyrrhic victory. Here’s what I learned from this experience.\u003c/p\u003e\n\n\u003ch3\u003e1. Don’t put people on the spot\u003c/h3\u003e\n\n\u003cp\u003eI enjoy spontaneity and surprises. But given I heard the exact phrase “I hate surprises” during this debacle, I’ve come to appreciate that not everyone is comfortable having an activity unexpectedly thrust upon them. \u003c/p\u003e\n\n\u003cp\u003eI could have at least given people a heads-up before the meeting that I was planning on doing a quiz, and maybe linked to an example so they could get a feel for how it worked.\u003c/p\u003e\n\n\u003ch3\u003e2. Give clear instructions\u003c/h3\u003e\n\n\u003cp\u003eSpeaking of which, I was not at all clear about the mechanics of the quiz. \u003c/p\u003e\n\n\u003cp\u003eIt was a connections-style 4x4 grid (like you may have seen on British cult classic game show \u003ca href=\"https://www.youtube.com/watch?v=wlUImPcdISg\" target=\"_parent\"\u003eOnly Connect\u003c/a\u003e) where there are four groups of four related words that you have to find, but there are a few tricky words included to throw you off. \u003c/p\u003e\n\n\u003cp\u003eTo anyone unfamiliar with the format, it doesn’t really look like a “quiz” so much as a cryptic jumble of unrelated words. I definitely now see why some people’s instant response to this was confusion or frustration, and I could have done more here to guide people through the exercise.\u003c/p\u003e\n\n\u003ch3\u003e3. Make participation optional\u003c/h3\u003e\n\n\u003cp\u003eThere was also some confusion about whether the goal was to work collaboratively or competitively on the quiz, not helped by me saying “do whatever you like” (I was getting a bit flustered myself by this point)! \u003c/p\u003e\n\n\u003cp\u003eReally, I should have made it clear from the outset that it was totally optional and no-one had to participate if they didn’t want to, to take the pressure off.\u003c/p\u003e\n\n\u003ch3\u003e4. Don’t take people’s reactions personally\u003c/h3\u003e\n\n\u003cp\u003eAs I’ve already alluded to, the team’s initial response didn’t quite meet my expectations and my first instinct was to feel embarrassed and a bit wounded. \u003c/p\u003e\n\n\u003cp\u003eOn reflection I realise that, just as with any interaction in life, there are a lot of factors that influence people’s behaviour: mood, time of day, energy levels, what else we have going on outside of work, our own insecurities being triggered, and so on.\u003c/p\u003e\n\n\u003ch3\u003e5. Not everyone finds the same things fun**\u003c/h3\u003e\n\n\u003cp\u003eI’m a \u003cem\u003ehuge\u003c/em\u003e fan of quizzes and puzzles. I could do them all day long. But if I turned up for a team visit at our headquarters in Dublin and found out they’d set up an elaborate Sports Day course, I’d die a little inside. \u003c/p\u003e\n\n\u003cp\u003eThis is to say, we all have our own definitions of fun, and different activities we find enjoyable. And this is definitely something I’ll consider more carefully next time I think of doing a group activity.\u003c/p\u003e\n\n\u003cp\u003eAt the end of the day, as much as it was a slightly embarrassing moment for me (and probably others in the team), we were able to laugh about it together. \u003c/p\u003e\n\n\u003cp\u003eI won\u0026#39;t stop trying to find fun ways for the team to have bonding moments that don’t revolve entirely around our work, but I will try to be more mindful going forward about how to actually make it enjoyable, rather than something that feels high-pressure. \u003c/p\u003e\n\n\u003cp\u003eAnd if you’d like to see what all the fuss was about, you can take the quiz for yourself \u003ca href=\"https://connections.swellgarfo.com/game/-NuxA6D3zBZHUhmBdDqm\" target=\"_parent\"\u003ehere\u003c/a\u003e.\u003c/p\u003e\n","date_published":"2024-04-16T20:32:00Z"},{"id":"https://diva.pub/posts/unique-emails","title":"New feature: Limit tickets to one per unique email address","content_html":"\u003cp\u003eWe've just released a beta feature allowing organisers to limit tickets to one per email address. \u003c/p\u003e\u003cp\u003eFolks can still buy multiple tickets, but with this feature enabled, each ticket will need to be assigned to someone different.\u003c/p\u003e\u003cp\u003eWhether you want to avoid duplicate registrations and ensure fair access for all attendees, or you're working with a third-party app like \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://help.swapcard.com/en/articles/8624871-setting-up-a-tito-integration-in-your-event\"\u003eSwapcard\u003c/a\u003e that requires each ticket holder to have a unique email address, we hope this change will make it easier for organisers to track attendance and help minimise administrative overhead.\u003c/p\u003e\u003cp\u003eRead more in our \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://help.tito.io/en/articles/9027417-unique-emails\"\u003edocumentation\u003c/a\u003e and \u003ca target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"mailto:support@tito.io\"\u003econtact us\u003c/a\u003e to request access.\u003c/p\u003e\u003cp\u003e\u003c/p\u003e","date_published":"2024-04-04T11:30:00Z"}]}