Ticketing Was the Easy Part. Owning the Audience Wasn’t.

DrisTix – a multi-tenant event platform with a built-in attendee CRM, split payouts, and a door scanner that keeps working when the Wi-Fi doesn’t.

DrisTix hero image

Overview

DrisTix is an event platform for organizers who’d got tired of running their business across five tools that don’t speak to each other. Ticketing in one place, email in another, a spreadsheet of last year’s attendees somewhere in a Drive folder, payouts landing whenever the platform felt like releasing them, and a volunteer at the door with a printed list and a highlighter.

The brief was to pull all of that into one product sell tickets, take the money, pay the organizer, build the event site, email the audience, scan at the door. What made it interesting wasn’t the ticketing. It was everything that had to hold together underneath it. As a CRM development company, we built the platform around the thing organizers actually own: the list of people who showed up last time.

Challenge

Once we got into it, here’s what the product genuinely had to solve:

1

The audience list belonged to nobody

Ticketing tools sell tickets and stop there. Organizers were exporting CSVs into Mailchimp and losing the thread between who bought what and who to talk to next. That relationship data had to live in the platform, not get shipped out of it.

2

Venue wifi is bad and the queue doesn’t wait

Check-in happens in basements, fields and converted warehouses, with four hundred people arriving in twenty minutes. A scanner that needs a live API call per ticket fails exactly when it matters most.

3

The money has to split, and Stripe retries

Organizer gets paid, platform takes its fee, both off one card transaction. The hard part isn’t the split — it’s what happens when an organizer hasn’t finished onboarding, or when a webhook gets delivered twice.

4

Three codebases, one API contract

Web and mobile shipping on separate schedules against a shared backend. Keeping them properly independent, with no shared code, took discipline rather than good intentions.

Our Approach

We built it in modules instead of marching toward one big launch date. Ticketing first, then payments, then payouts, then subscriptions, then the email engine, then the website builder. Each piece shipped when it was ready. That’s why the database has 65 migrations behind it rather than one enormous schema someone wrote in week two and regretted by month four.

The backend runs a strict layered flow—routes, controllers, services, repositories—and we actually enforced it instead of leaving it as a diagram in the onboarding doc. It looks bureaucratic on paper. In practice, it’s why you can hire python developer and have them find where something lives without asking anyone, even across 38 route modules. The web and mobile work ran as separate teams, making it easier to hire dedicated developers to work against the same contract.

Solution Delivered

The attendee CRM is the part organizers stay for. Segment an audience by who attended, who came before, or who’s holding a ticket to something upcoming. Build a campaign in five steps, personalise it with merge tags so it references someone’s actual ticket, and set automations to fire on triggers rather than on somebody remembering. Abandoned checkouts get chased automatically. Email goes out from the organizer’s own domain through SES, which is the difference between the inbox and the promotions tab — a small detail that quietly decides whether any of it works.

Check-in assumes the network will fail, because it will. Scans hit the server when there’s a connection and fall back to an on-device SQLite database when there isn’t, queueing up and syncing back in a batch on reconnect. Honestly, this is the piece we’re most pleased with, and the one no organizer will ever notice — which is rather the point.

On payments, every Stripe and SES webhook gets checked against a ledger before anything happens, so a retried delivery can’t double-charge anyone. Split payouts run through Connect, and if an organizer hasn’t finished onboarding the sale still completes and settles to the platform rather than failing at checkout. We drew on our fintech software development work for the payment side and our events and ticketing experience for the rest.

Key Features

The pieces that carry the product, for organizers and for the people at the door.

Built-in₹ attendee CRM

Built-in₹ attendee CRM

Segment by attended, past or upcoming events, and market to that list without exporting it anywhere.

Offline ticket check-in

Offline ticket check-in

On-device validation and a queued sync, so the door keeps moving when the connection drops.

Email automation

Email automation

Triggered sends, merge tags, open and click tracking, and abandoned-cart recovery.

Stripe Connect payouts

Stripe Connect payouts

Split payments to organizers, with a safe fallback when an account isn’t onboarded yet.

Local + international payments

Drag-and-drop site builder

Organizers publish a branded event site with custom domains, version history and rollback.

Three portals, one platform

Three portals, one platform

Public, Organizer and Admin, each with the permissions and oversight that role needs.

Results and Outcomes

Engineering figures from the build as of August 2026 development is ongoing. Swap in measured business numbers before publishing.

65:

Migrations shipped module by module, rather than one big-bang schema.

148

Automated backend tests, weighted toward permissions, exports and payments.

38

API route modules under one versioned contract, serving web and mobile.

3

Independent codebases, each free to ship on its own schedule.

Technology Stack

Chosen for a platform that has to keep growing without seizing up.

FastAPI Python

FastAPI + Python

Backend API across 38 route modules, layered and predictable.

postgresql SQLAlchemy

PostgreSQL + SQLAlchemy

Relational core with 65 Alembic migrations of history behind it.

react Native icon Typescript logo

React + TypeScript

Three portals in one SPA, built on Vite, Tailwind and shadcn/ui.

react Native icon

React Native

Check-in companion app with camera scanning and offline storage.

Stripe_Logo Connect logo

Stripe + Connect

Payments, split payouts, subscriptions, all webhook-verified.

aws logo Email delivery domains

AWS SES + SNS

Email delivery on organizer-owned domains with per-recipient logging.

Conclusion

Organizers don’t lose customers because their checkout was ugly. They lose them because the relationship lives in someone else’s tool, and the next event starts from a cold list. DrisTix keeps that data where it belongs and builds the ticketing around it, which is a custom CRM development problem as much as an event one. If you’re building a platform where customer data is the actual product, hire CRM developers who’ll get the schema right before it’s expensive to change and build the platform module by module.

Got a platform where the customer data is the product?

Start Your CRM Build

Show Similar Projects

Rebellious

Goods Fulfill

An online store runs on a dropshipping business model for electronics

rebellious

Rebellious Fashion

One-Stop Solution for overall women’s fashion needs

proship

Proship

A logistics aggregator app provides a cost-effective shipping experience for ecommerce.