Building a Fully Automated Student Pipeline Into TestPortal
so this is the project i have been grinding on lately, and honestly, it is the type of build that starts as "eh how hard can it be" and turns into a whole spaghetti monster of moving parts. i am not even mad. let me break down what we are cooking.
the quick version
we are building an automated system for a client that plugs straight into TestPortal. the whole vibe is zero human in the loop. students, or their guardians, sign up, pick their tests, pay the qualification fee, and from there the machines take over. a REST API grabs their test, drops a link on the student portal, they go take the test on TestPortal's site, and IF they pass, the API talks to WordPress and TestPortal together, places their global rounds order (whatever they picked), and fires off an invoice. that is the dream. we are not fully there yet. this is very much WIP, but the foundation is real.
how the flow actually works
here is the pipeline, step by step, the way it is supposed to run when it is finished:
- student or guardian registers on the site for one or more of the competitions
- they pay the qualification round fee right away
- once paid, the REST API fetches their test from TestPortal and shows a link on the student portal
- they click through, get redirected to TestPortal, and sit the test over there
- pass the qualification round, and the API kicks into gear
- it syncs with WordPress plus TestPortal and places the global rounds order based on what the student selected
- an invoice gets sent to them, no manual billing, no chasing
- bonus: if there is a supervisor attached, they can track progress, see grades, all that good stuff
what is actually built so far
this is a WordPress child theme (Elementor Hello) with a custom module layer. here is the real talk on what exists today:
the student portal
- a shortcode that renders a whole dashboard
- pulls the student's latest order and shows payment status at the top (green means good, yellow means "yo pay your qual fee")
- displays all their registration details, including name, school, country and city, competitions (IMEC, ISCO, JEO SEO, ART and AI), and accommodation choices
- inline editing with a slick view toggle plus AJAX resubmit, so they can fix mistakes before the invoice locks things down
- once the global round invoice is paid, editing locks. no refunds via the back door
the registration engine
- hooks into Elementor Pro forms so the frontend handles the UX and we handle the logic
- when a student submits the qualification form, we:
- auto create a WordPress user (with a generated password) if they do not exist
- assign the student role
- stash all their meta, including school, guardians, medical info, comps, and accommodation
- create a WooCommerce order for the qualification round and attach everything as order meta
- a welcome email goes out with their credentials plus a full registration summary, copied to guardians
the supervisor side
- separate supervisor registration form flow
- builds an auto generated teacher ID (for example one starting with a country code) from the country
- assigns the supervisor role with branch and secondary email details
- this is where progress tracking plus grades are meant to plug in later
OTP email verification
- students must verify their email before the form passes
- we send a six digit code, it lives in a ten minute window, and validation checks it server side
- also catches duplicate emails and guardian email collisions, because the guardian cannot be the student, obviously
validation layer
- password match checks for supervisors
- student email cannot equal guardian emails
- code expiry and mismatch handling
the fun part, a.k.a. the WIP struggle
let me be honest about what is not finished, because pretending everything is clean would be a cap:
- the TestPortal REST API integration is the big ticket item. the actual fetch the test, link the portal, and sync on pass logic is the current mountain to climb. the whole pipeline's point of no return.
- the global rounds order placement, the send invoice plus place order for whatever they picked step, is stubbed in (there is an estimated fee calculator that adds up comps and accommodation), but the live end to end round trip is not wired yet.
- supervisor progress and grades dashboard: the accounts and roles exist, but the tracking UI plus grade sync is not there.
- payment status to test access gating: the plumbing is set up but the full "paid unlocks test link" handshake needs finishing.
tech stack snapshot
- WordPress plus WooCommerce (the order lifecycle is our source of truth)
- Elementor Pro forms (frontend UX plus hooks)
- custom PHP modules in the child theme's inc folder
- REST API talking to TestPortal (the WIP star of the show)
- OTP email verification, roles, and AJAX, all the good stuff
why this is low key cool
because nobody wants to babysit a spreadsheet of who paid, who passed, and who gets which round. the whole point is to register once, pay the qual fee, and let the API do the rest: tests, ordering, invoicing, all automatic. guardians can stay in the loop, supervisors can keep eyes on progress, and the client just watches it work. that is the dream anyway.
where we are headed
- lock in the TestPortal REST API handshake (fetch, redirect, and pass callback)
- auto place global rounds orders plus send invoices on pass
- supervisor tracking dashboard with live grades
- polish the paid to test link unlock flow
if you are building something with TestPortal plus WordPress and an unholy amount of automation glue, drop me a line. i am literally in the middle of it.