New Starter Pipeline
The New Starter Pipeline replaces a standalone CRM (such as GoHighLevel) with a fully integrated lead funnel — built into r4ptor at no extra cost.
How it works
- A prospective student finds your club (via a Meta ad, a Google search, a link on your website, etc.)
- They click through to your public trial booking form at
https://yourclub.r4ptor.app/join - They choose a class, pick a trial date, and enter their details — no account, no login
- The booking lands in your Trial Starters pipeline dashboard instantly
- Automated comms fire in the background (confirmation, 24-hour reminder, nurture emails)
- You track the lead through the funnel until they convert to a full member
The /join booking form
The booking form is a public page — no login required, accessible from any device.
What the form collects
| Field | Required |
|---|---|
| Child's first and last name | Yes |
| Child's date of birth | Yes |
| Parent / carer name | Yes |
| Parent / carer phone | Yes |
| Parent / carer email | Yes |
| Class selection | Yes |
| Trial date selection | Yes |
| How did you hear about us? | Yes |
| Medical conditions / allergies | Optional |
| SMS marketing consent | Optional opt-in |
Attire acknowledgements
Three configurable checkboxes appear before submission (all required). The default items are:
- I understand my child should wear comfortable, loose-fitting clothing to their first trial
- I understand training takes place in bare feet
- I understand punctuality is important — please arrive 5 minutes before the start time
To customise these for your club, set TRIAL_FORM_ATTIRE_ITEMS in Settings → App Settings as a JSON array of strings.
Rate limiting
The form is rate limited to 5 submissions per IP address per hour to prevent spam.
Disabling the form
To temporarily close online bookings (e.g. over a holiday period), set TRIAL_FORM_ENABLED to false in App Settings. The /join URL will display a "bookings currently closed" message.
Trial Starters pipeline
Access the pipeline from the New Opportunities tile on the home screen.
Lead statuses
Leads move through a defined funnel:
| Status | Meaning |
|---|---|
| NEW | Lead received — not yet contacted |
| CONTACTED | You've reached out but no trial booked yet |
| TRIAL BOOKED | Trial date confirmed |
| TRIAL ATTENDED | They came — decision pending |
| TRIAL COMPLETE | Both sessions attended — eligible for membership offer |
| CONVERTED | Signed up as a full member (mandate confirmed by bank) |
| LOST | Not proceeding (can be re-opened to NEW) |
Filtering
Use the filter tabs at the top of the pipeline list to show leads by status, or view all active leads (any non-terminal status) at once.
Lead detail sheet
Tap any lead to open the detail sheet. From here you can:
- View all contact details
- Move the lead to the next status
- Add or edit internal notes
- View the full comms history for this lead
- Delete the lead (admin only)
Adding leads manually
Use the + button to add a lead without them going through the public form — useful for walk-ins, phone enquiries, or referrals.
Automated comms
Automated comms (NSP-4) are in active development and will be available before July 2026.
The following comms fire automatically once the cron job is active:
| Template | Trigger | Channel |
|---|---|---|
TRIAL_CONFIRMATION | Immediately on form submit | SMS |
TRIAL_REMINDER_24H | 24 hours before trial date | SMS |
All templates are configurable via Comms → Templates in the admin panel.
Ad campaign attribution (UTM tracking)
r4ptor automatically captures UTM parameters from the /join URL and stores them against each lead. This tells you exactly which ad or campaign generated each trial booking, without any manual tracking.
How it works
When someone clicks your ad and lands on /join?utm_source=meta&utm_medium=paid&utm_campaign=june-adults, r4ptor reads those parameters silently in the background. The lead is created in the pipeline with the source tagged.
In the pipeline you'll see a coloured attribution chip on each tagged lead card:
| UTM source | Chip colour |
|---|---|
meta / facebook / fb | Blue — Meta |
google | Green — Google |
instagram | Pink — Instagram |
tiktok | Dark — TikTok |
| Any other value | Grey — value capitalised |
Opening a lead's detail sheet shows the full attribution: source chip, medium, and campaign name.
Leads added manually or via the public form without UTM parameters fall back to showing the free-text "How did you hear about us?" answer instead.
Naming conventions
UTM parameters follow a widely-used standard (originally from Google Analytics) that all major ad platforms recognise. Stick to these conventions and your data will be consistent across tools.
Rules:
- Always lowercase
- No spaces — use hyphens (
adults-june, notAdults June) - Be consistent —
metaeverywhere, notmetasometimes andfacebookother times
| Parameter | What it tracks | Standard values |
|---|---|---|
utm_source | Which platform | meta, google, instagram, tiktok, website, email |
utm_medium | The channel type | paid-social (FB/IG ads), cpc (Google paid search), email, organic-social (free posts) |
utm_campaign | Your campaign name | adults-june, snakes-cranes-summer, brand |
The pipeline chip is based on utm_source. Use meta for all Facebook and Instagram ads (even if they run on Instagram — they're managed through Meta Ads Manager). Use instagram only if you're tracking organic Instagram posts separately.
Building your URL
Take your base /join URL and append the parameters with ? then & between each one:
https://yourclub.r4ptor.app/join?utm_source=meta&utm_medium=paid-social&utm_campaign=adults-june
You can also use Google's Campaign URL Builder (free, no account needed) to build URLs without typing manually — search "Google Campaign URL Builder" and paste your /join URL as the website URL.
Ready-to-use examples
Meta (Facebook/Instagram) paid ad:
https://yourclub.r4ptor.app/join?utm_source=meta&utm_medium=paid-social&utm_campaign=adults-june
Google paid search ad:
https://yourclub.r4ptor.app/join?utm_source=google&utm_medium=cpc&utm_campaign=kung-fu-london
Link on your own website:
https://yourclub.r4ptor.app/join?utm_source=website&utm_medium=organic&utm_campaign=homepage-cta
Organic social post (Instagram/Facebook):
https://yourclub.r4ptor.app/join?utm_source=instagram&utm_medium=organic-social&utm_campaign=june-post
Adding the URL in Meta Ads Manager
Meta has a built-in URL parameter builder so you don't have to construct the string manually:
- In Meta Ads Manager go to the Ad level (not campaign or ad set)
- Under Destination → Website URL, paste your base URL:
https://yourclub.r4ptor.app/join - Click Build a URL Parameter (appears below the URL field)
- Fill in the fields — Meta will append them automatically
- Alternatively, just paste the full UTM-tagged URL directly into the Website URL field
Use the same utm_campaign value for all ads within one campaign. Only change it when you start a genuinely new campaign push — this lets you count total bookings per campaign across all creatives.
What you can and can't track
| Traffic source | UTM chip in r4ptor? | Notes |
|---|---|---|
| Meta / Facebook paid ad | ✅ Yes | You set the URL in Ads Manager |
| Instagram paid ad | ✅ Yes | Same — managed through Meta Ads Manager |
| Google paid search | ✅ Yes | Set destination URL in Google Ads |
| Organic Google search | ❌ No | Google doesn't pass UTMs on organic results |
| Link on your website | ✅ Yes | Add ?utm_source=website to your CTA |
| Organic social post | ✅ Yes | Add UTMs to the link in your post caption |
| Word of mouth / walk-in | ❌ No | Use the manual add + free-text source field |
Meta Pixel integration
If you run Meta (Facebook/Instagram) ads, connect your Pixel so that every trial booking fires a CompleteRegistration conversion event. This combines with UTM tracking: Meta can optimise for bookings and r4ptor tells you which leads actually came from Meta.
- Go to Settings → App Settings
- Add your Pixel ID as
META_PIXEL_ID - Save — the Pixel fires automatically on the
/join/confirmedpage after every successful submission
Switch your campaign objective to Conversions
Once your Pixel is firing, go to Meta Ads Manager and change your campaign objective from Traffic or Reach to Conversions, setting CompleteRegistration as the conversion event.
This makes your ad spend work significantly harder: Meta's algorithm shifts from finding people who click to finding people who are most likely to actually book. You'll typically see fewer clicks but a much higher proportion that convert.
This also unlocks:
- Lookalike audiences — built from people who completed the booking form
- Retargeting — people who visited
/joinbut didn't submit - Cost-per-result reporting — actual cost per trial booking, not per click
WordPress / website integration
The /join page is a standalone full-page experience. The simplest integration is to link directly from your existing website:
<a href="https://yourclub.r4ptor.app/join">Book Your Free Trial</a>
r4ptor sets X-Frame-Options: SAMEORIGIN on all routes, which prevents the page being embedded in a third-party iframe. Use a direct link instead.
AppSettings keys
| Key | Purpose | Default |
|---|---|---|
TRIAL_FORM_ENABLED | true / false — enables or disables the form | true |
TRIAL_FORM_ATTIRE_ITEMS | JSON array of attire checkbox labels | Three default items |
META_PIXEL_ID | Your Meta Pixel ID for conversion tracking | None |
VENUE_ADDRESS | Address shown in confirmation comms | None |
Membership conversion
When a lead reaches Trial Complete, the instructor can send the Trial Conversion Offer SMS from the lead detail sheet. This kicks off the Direct Debit mandate flow via GoCardless.
See Membership & Direct Debit for the full flow.