Case Study:We Created a Tool to Market Hyperlocal Cinema Showtimes with Twitter

Gruvi, a frequent client of ours, was commissioned by Twitter to develop a new marketing toolchain for content marketers. They challenged us to get on board and help them with its development.

Twitter’s media clients needed a better way to market movie showtimes to users. Showtimes data is usually very local, since cinema density is high in a major city. Previously, this meant that creating a campaign for a city like London meant having to manually compile a daily list of the best showtime for each postcode, and painstakingly creating the tweets with links to ticketing, each with the right location targeting information.

Working with Life on Mars takes away the pressure from critical campaign times. They help us stay on top of the innovation game by pushing new features and experiments out quickly, and are an invaluable partner for the work we do with Twitter. I highly recommend them to anyone who needs a solid product built. Ben Johnson CEO at Gruvi

Product Image

The challenge here was to find a way, within the constraints of the Twitter Ads API, to automate the process of delivering the right showtime to the right user, wherever they are.

Location targeting and Showtimes API integration

Gruvi maintains a comprehensive movie showtimes API, which we had to integrate with in order to get the relevant showtimes for each location chosen by the marketeer. We used geocoding techniques to convert the locations entered into coordinates, and then queried the showtimes API for the closest showtime for that movie in those coordinates. With this information, we could go ahead and create promoted tweets with the movie trailer, showtime data, and a link to ticketing.


The core and value of this project is the automation it provides. Campaigns which used to take hours to create, a major pain point for Twitter’s and Gruvi’s clients, can now be set up in less than 5 minutes. We take all the locations chosen for targeting, and automatically interface with the Twitter API in order to generate the correct structure of tweets and their associated API objects.

In order to maximize ROI, we wanted to ensure that old showtimes were never advertised. We guarantee this by stopping any tweet promotions which corresponding showtime is no longer available.

We built this tool to enable fire-and-forget interaction. Once the campaign is set up, there’s nothing else to do except for sitting back and watch the conversions come in. For the duration of the campaign, tweets are regenerated overnight so that they are updated with the correct showtime information and ticketing links for the day.

URL Shortening

Since the text length of our tweets is relatively short, Twitter doesn’t automatically shorten the displayed URL using their shortener. Gruvi wanted to use a particular short URL for these, so building a URL shortener was one of the goals of the project. It would have the added benefit of serving as a second source of conversion metrics.

This was a relatively simple tool to build, but we still had to ensure it would be prepared to take the inevitable load caused by running country-wide movie campaigns. Gruvi’s infrastructure is Heroku-based, so we built a very trimmed-down Rails 5 API-mode application, and Redis proved to serve us well as a blazing fast database.

This allowed us to use a single dyno to serve 5K+ requests per minute, averaging 10ms per request, as our load testing revealed (see chart above). We also made sure to architect it in a way that, If it’s ever necessary, Gruvi can scale the tool just by pressing a button.

Need something built?

Get in touch with us at