Start free for 7 days. No card required. Upgrade only when you're convinced it works.
All paid plans include a 7-day free trial. Full refund any time before your first alert is sent. Once your first alert reaches you, the service is fulfilled. Refund policy →
We monitor DVSA availability 24/7 so you hear about slots before they're gone.
WhatsApp messages land on your lock screen instantly. Email as a backup.
Set your date range and time preferences. We only alert when it's actually useful.
No contracts, no hidden fees. One click to unsubscribe from your account page.
Choose your plan below, then fill in your preferences. We'll watch your centres and alert you the moment a slot appears.
WhatsApp alerts are available on Standard and above. Upgrade →
No card required. Full refund before your first alert. Trial lasts 7 days.
Tell us your preferred centres, dates, and time.
Our backend monitors DVSA availability 24/7, automatically.
You get an instant WhatsApp or email the moment one appears.
Click the link, log in to DVSA, and grab the slot.
Enter your email and password to manage your alerts and subscription.
Demo: email ahmed@example.com · password Test1234!
You'll be switched to Standard (£3.99/mo) immediately. Your card will be charged at the next billing date.
Changes take effect from the next hourly check.
Your alerts will keep running until the end of your current billing period. You won't be charged again after that.
Wiring up Stripe subscriptions, the hourly DVSA checker, WhatsApp, and email.
Table subscribers: id, name, email, whatsapp, centres[], date_from, date_to, time_pref, plan (trial/basic/standard/pro), stripe_customer_id, stripe_sub_id, trial_ends_at, active, alerts_sent, created_at.
Create products for Basic (£1.99), Standard (£3.99), Pro (£4.99). Use Stripe Checkout with trial_period_days: 7. Listen to customer.subscription.deleted webhook to mark users inactive. Store stripe_customer_id in your DB.
Schedule 0 * * * * (hourly). Pro subscribers also run at 30 * * * *. Fetch active subscribers, check DVSA, send notifications for matches.
Triggered when a slot matches a subscriber with email enabled (all plans).
Standard and Pro plans only. Requires WhatsApp Business opt-in from user. Use approved message template for outbound alerts.
// Run once to create your Stripe products + prices const stripe = require('stripe')(process.env.STRIPE_SECRET); const plans = [ { name: 'CancelCatch Basic', amount: 99, id: 'basic' }, { name: 'CancelCatch Standard', amount: 249, id: 'standard' }, { name: 'CancelCatch Pro', amount: 499, id: 'pro' }, ]; for (const p of plans) { const product = await stripe.products.create({ name: p.name, metadata: { plan_id: p.id } }); const price = await stripe.prices.create({ product: product.id, unit_amount: p.amount, currency: 'gbp', recurring: { interval: 'month', trial_period_days: 7 } }); console.log(`${p.id}: ${price.id}`); // save these price IDs to your .env }
// POST /api/subscribe — called when form is submitted app.post('/api/subscribe', async (req, res) => { const { name, email, whatsapp, centres, plan, ...prefs } = req.body; if (plan === 'trial') { // No Stripe — just save to DB await supabase.from('subscribers').insert({ name, email, whatsapp, centres, plan: 'trial', trial_ends_at: new Date(Date.now() + 7*86400000), active: true, ...prefs }); return res.json({ ok: true }); } // Paid plan — create Stripe Checkout session const priceIds = { basic: process.env.STRIPE_PRICE_BASIC, standard: process.env.STRIPE_PRICE_STANDARD, pro: process.env.STRIPE_PRICE_PRO, }; const session = await stripe.checkout.sessions.create({ mode: 'subscription', payment_method_types: ['card'], customer_email: email, line_items: [{ price: priceIds[plan], quantity: 1 }], subscription_data: { trial_period_days: 7 }, success_url: `${BASE_URL}/?success=1`, cancel_url: `${BASE_URL}/`, metadata: { name, whatsapp, centres: JSON.stringify(centres), plan, ...prefs } }); res.json({ checkoutUrl: session.url }); });
// cron.js — 0 * * * * (hourly) and 30 * * * * (Pro top-up) async function run(proOnly = false) { let query = supabase.from('subscribers').select('*').eq('active', true); if (proOnly) query = query.eq('plan', 'pro'); const { data: subs } = await query; for (const sub of subs) { // expire trials if (sub.plan === 'trial' && new Date(sub.trial_ends_at) < new Date()) { await supabase.from('subscribers').update({ active: false }).eq('id', sub.id); continue; } for (const centre of sub.centres) { const slots = await checkDVSA(centre, sub.date_from, sub.date_to, sub.time_pref); if (slots.length) await notify(sub, centre, slots[0]); } } } // Schedule: runs continuously 24/7 cron.schedule('0 * * * *', () => run(false)); cron.schedule('30 * * * *', () => run(true));
Postgres DB + REST + auth. Free tier handles up to ~50k subscribers.
Subscriptions, trials, and webhooks. No monthly fee.
Host your Node.js cron job with native cron scheduling.
100 emails/day free. 50k/mo for $15.
WhatsApp Business API. Requires template approval.
Host the frontend. Auto-deploys from GitHub.
SUPABASE_URL=https://xxxx.supabase.co SUPABASE_KEY=your_service_role_key STRIPE_SECRET=sk_live_xxxx STRIPE_WEBHOOK_SECRET=whsec_xxxx STRIPE_PRICE_BASIC=price_xxxx STRIPE_PRICE_STANDARD=price_xxxx STRIPE_PRICE_PRO=price_xxxx TWILIO_SID=ACxxxxxxxx TWILIO_TOKEN=your_auth_token TWILIO_WA_NUMBER=whatsapp:+14155238886 SENDGRID_KEY=SG.xxxxxxxxxxxx ADMIN_PASSWORD=your_admin_password BASE_URL=https://cancelcatch.co.uk
Effective 12 May 2026 · Updated 28 May 2026
From 12 May 2026, new DVSA regulations (SI 2026/326) mean that only the candidate themselves can book, change, cancel, or swap a driving test. It is now against the law for any third party to perform those actions on a learner's behalf.
Three specific changes came into force:
| Date | Rule |
|---|---|
| 31 March 2026 | Learners can change their booking a maximum of 2 times before losing their fee. |
| 12 May 2026 | Only the candidate can book, change, cancel, or swap a driving test. Third-party booking is now illegal. |
| 9 June 2026 | Test relocations are limited to one of the 3 nearest test centres to your current booking. |
| What we do | What we never do |
|---|---|
| Monitor publicly visible DVSA cancellation availability 24/7 across every centre on your list | Book a driving test on your behalf |
| Detect matching slots in real time — far faster than any manual refresh | Log in to your DVSA account |
| Send you an instant WhatsApp + email with the slot details and a direct link to gov.uk | Change, cancel, or swap your booking |
| Filter alerts to only slots matching your preferences (centre, date, time) | Hold, reserve, or set aside any test slot |
| You open the link, sign in with your own DVSA credentials, and book the slot yourself | Resell or transfer test slots — this is illegal and we will never facilitate it |
From 9 June 2026, if you want to move your driving test you can only move it to one of your 3 nearest test centres. Use this tool to check which centres you can move to before choosing your preferences.
Where is your driving test currently booked? Start typing to search.
Data source: gov.uk — published 17 March 2026. The 3 nearest centres for your booking may change; from 9 June 2026 the official DVSA service will show your live options. Check on gov.uk →
If you have any questions about how our service complies with the new DVSA rules, contact us at hello@cancelcatch.co.uk.
Last updated: 28 May 2026 · Registered with ICO
CancelCatch ("we", "us", "our") operates the CancelCatch DVSA test slot notification service available at cancelcatch.co.uk. We are registered with the UK Information Commissioner's Office (ICO). For any privacy queries contact us at privacy@cancelcatch.co.uk.
| Data | Why we collect it | How long we keep it |
|---|---|---|
| First and last name | To personalise your alerts | Until you delete your account |
| Email address | To send you slot availability alerts and account notifications | Until you delete your account |
| WhatsApp number | To send you WhatsApp alerts (only if you opt in) | Until you delete your account or remove consent |
| Test centre preferences | To match you with relevant available slots | Until you delete your account |
| Date and time preferences | To filter alerts to slots you actually want | Until you delete your account |
| Subscription plan and billing info | To manage your subscription (processed by Stripe — we never see your card details) | 7 years (legal requirement) |
We process your personal data under the following lawful bases:
We only share your data with the third-party services required to operate CancelCatch:
We do not sell, rent, or trade your personal data with any third party.
Under UK GDPR you have the following rights:
All personal data is stored encrypted at rest in our Supabase database. Access is restricted to authorised personnel only. In the event of a data breach we will notify affected users and the ICO within 72 hours as required by UK GDPR.
We use only a single session cookie to keep you logged in to your account. We do not use tracking cookies or advertising cookies.
We may update this policy from time to time. We will notify you by email of any significant changes. Continued use of the service after notification constitutes acceptance of the updated policy.
We want you to feel confident subscribing to CancelCatch. Here is our policy:
| Scenario | Outcome |
|---|---|
| You cancel before your 7-day free trial ends | You are never charged. Full stop. |
| You are charged but have not yet received your first alert | Full refund — no questions asked. Contact us any time before your first alert is sent. |
| You received your first alert (service fulfilled) | No refund — the service was delivered. You can cancel to stop future billing. |
| A technical failure on our side prevented the service from working | Full refund for the affected billing period, issued within 5 working days. |
| You forgot to cancel and were charged for a new month | We will refund the most recent charge if you contact us within 48 hours and have not received any alerts in that period. |
To request a refund, email billing@cancelcatch.co.uk with your registered email address and reason. We aim to respond within 2 working days.
Cooling off period: Under the UK Consumer Rights Act 2015, you normally have 14 days to cancel a digital service. By starting your free trial and using the CancelCatch service, you agree that the service begins immediately and acknowledge that your right to a 14-day cooling off period is waived once your paid subscription commences and alerts have been delivered to you.
For privacy-related queries: privacy@cancelcatch.co.uk
For billing and refund queries: billing@cancelcatch.co.uk
For general enquiries: hello@cancelcatch.co.uk