@extends('layouts.app') @section('title', 'Turn DMs into booked appointments') @section('meta_description', 'Tattoo studio software that takes the request first. Clients send you the idea, placement, references and budget; you review it and offer times. Consent forms and reminders follow on their own.') {{-- Canonical, Open Graph and Twitter now come from partials/head for every page. Only the page-specific product schema lives here. --}} @section('schema') @endsection @section('content')

For tattoo studios

Turn DMs into booked appointments.

A tattoo isn't a haircut, so InkLoop doesn't open with a calendar. Clients send you the idea, placement, size, references and budget. You read it, then offer a few times that actually fit your week.

Free for one artist. No card, no countdown.

One price for the whole shop. Taking on a second artist does not mean a second subscription, which is not true of most of what else is out there.

Enquiries

3 waiting
@foreach([ ['name' => 'Dana O.', 'status' => 'New', 'tone' => 'stencil', 'desc' => 'Fine-line botanical running down the forearm, quite delicate.', 'meta' => 'Left forearm · ~20cm · $300–600'], ['name' => 'Marcus B.', 'status' => 'Awaiting reply','tone' => 'muted', 'desc' => 'Cover-up over an old tribal band. Open on the design.', 'meta' => 'Right bicep · 3 times offered'], ['name' => 'Jess W.', 'status' => 'Booked', 'tone' => 'ok', 'desc' => 'Japanese half sleeve, happy to split across sessions.', 'meta' => 'Sat 14 Mar, 11:00 · deposit taken'], ] as $row)

{{ $row['name'] }}

{{ $row['status'] }}

{{ $row['desc'] }}

{{ $row['meta'] }}

@endforeach

The actual job

One booking currently lives in five places.

The reference is in Instagram. The size estimate is in a text message. Availability went by email. The deposit question is somewhere in all three. Before you can answer, you have to go and find the conversation and put it back together.

    @foreach([ 'Instagram DMs' => 'References and the first "how much?"', 'Text messages' => 'Placement, size, back-and-forth', 'Email' => 'Availability and quotes', 'A paper form' => 'Consent, signed on the day', ] as $where => $what)
  • {{ $where }}

    {{ $what }}

  • @endforeach

How it works

Review the request. Then open the calendar.

Three steps, in this order. The order is the whole point — nothing gets booked before somebody has looked at it.

    @foreach([ ['n' => '01', 'title' => 'They send the piece', 'body' => 'Your booking link asks for the idea, placement, size, style, references and budget — before it asks for anything else.'], ['n' => '02', 'title' => 'You read it', 'body' => 'It lands in one queue. Decide whether it is a real project, how long it needs, and who should take it.'], ['n' => '03', 'title' => 'You offer times', 'body' => 'Send three or four slots that fit your week. They pick one, and it becomes an appointment with a deposit against it.'], ] as $step)
  1. {{ $step['n'] }}

    {{ $step['title'] }}

    {{ $step['body'] }}

  2. @endforeach

Once a time is taken, the rest runs itself: consent form to sign, reminder before the session, aftercare afterwards. You do not send any of it.

Paperwork

Consent forms that hold up.

Health departments and insurers want records, not a shoebox. Every form is signed before the session, timestamped to the appointment it belongs to, and still there when somebody asks for it two years later.

@foreach([ 'Signed before they arrive' => 'The link goes out with the booking. They sign on their phone; it attaches itself to the appointment.', 'Medical history on file' => 'Allergies, medication and conditions flagged before the needle comes out, kept on the client record.', 'Findable at inspection' => 'Search by client or by date, export a PDF. No hunting through DMs for a form from last March.', 'Aftercare sent for you' => 'Goes out once the session is marked complete, so nobody has to remember.', ] as $title => $body)
{{ $title }}
{{ $body }}
@endforeach

Also in the box

Everything else a shop runs on.

@foreach([ 'Client records' => 'Every session, every reference, every note, in one place per person.', 'Multi-session work' => 'A sleeve is not one appointment. Track the project and the sessions under it.', 'Deposits' => 'Take one against a booking, refund part of it, or keep it on a no-show.', 'Invoicing' => 'Send an invoice, take payment online, watch what is still outstanding.', 'Body mapping' => 'Mark placement on the body, and see where your work actually goes.', 'Reminders' => 'WhatsApp, SMS or email before the session, without you sending them.', 'Portfolio gallery' => 'Flash and finished work, public or private, per artist.', 'Payroll' => 'Commission splits and payouts for a shop with more than one chair.', 'Your whole team' => 'Everyone sees the studio book. Flat price, however many artists.', ] as $title => $body)

{{ $title }}

{{ $body }}

@endforeach

Pricing

Priced per studio, not per artist.

Taking on a second artist should not cost you another subscription. One price for the shop, however many chairs are in it.

@include('billing.partials.plan-cards')

Every plan includes consent forms, client records and the request queue. Compare plans in full.

Have a look before you decide.

Working on your own costs nothing, with no card and no countdown. Or open the demo first — a real studio with real bookings, nothing to sign up for.

@endsection