Connecting your own services

Lumina Edu supports provider-owned workflows and external handovers. A program can render a mapped Contact Form 7 enquiry or Simply Schedule Appointments calendar on its own page, or route to a mapped Tutor LMS course. It can also hand a visitor to an external registration, contact, directions or mailing-list service. Lumina owns the mapping and presentation; the selected provider owns operational records and outcomes.

There is one integration that needs nobody at all: a dated session hands out its own calendar file. That one works the moment the companion plugin is active.

Where the site hands visitors over

Handover Where you fill it in What appears on the site
Registration Settings → Site details → How people register, and per program and per session The main action on a program, a session and the final action band
Consultation Program → Next step for a mapped calendar; Site details/per program for external fallback Embedded availability or a named handoff
Program enquiry Program → Next step → Contact Form 7 An embedded validated form with program context
Course enrolment Program → Next step → Tutor LMS The mapped provider course; enrolled visitors receive a continue-course action
Contact page Settings → Site details → Where else this site hands over The contact action used by the site's sections
Enquiry form on the Contact page Settings → Site details → Where else this site hands over → Enquiry form on this site A Contact Form 7 form inside the Contact page's enquiry panel
Directions Settings → Site details → Where else this site hands over A "Get directions" link beside your address — a link, never a map
Mailing list Settings → Site details → Where else this site hands over A "Join the mailing list" action

Each handover stores two things: an address, and the provider's name as you would say it out loud. Fill in both and the site tells a visitor where they are going before they go — on the button itself and in the line under it:

Register on Northline Bookings Registration continues on Northline Bookings. This site does not process enrolment or payment.

With an address and no name the button reads Register for this session.

Fill in only the address and the same control appears with the anonymous wording it has always had. Fill in neither and no control is rendered at all — not a greyed-out button, not a link to nowhere. An empty handover is silent.

What providers continue to own

These were considered and left out on purpose. If you need one, it is a link you add to a page yourself; nothing here pretends to manage it.

Which address wins

  1. The dated session's own address.
  2. The program's address.
  3. Site details.
  4. For registration and consultation only: this site's own consultation page, so the action is never a dead end. That case prints no "continues on…" sentence, because nothing continues anywhere — the visitor stays here.

A session or program address with no name of its own borrows the Site details name only when it is on the same host. A program that books through a different provider stays honestly anonymous rather than wearing a name that is not that provider's.

Recipes

Each recipe answers the same four questions. The plugin versions we tested, and exactly what was tested, are listed in Tested versions. What follows describes the shape of the thing to look for.

Simply Schedule Appointments

Install the free edition and create at least one published appointment type.

Contact Form 7 and Flamingo

Publish a Contact Form 7 form. Install Flamingo when submissions must be retained in WordPress.

Tutor LMS

Publish a Tutor LMS course before mapping it.

The Events Calendar and Event Tickets

Publish an event before linking it to a Lumina session.

A CRM or a mailing list

The shape: a hosted sign-up page, with its own consent text and its own unsubscribe link.

A calendar or scheduling page

The shape: a published calendar somebody can browse, or a per-person scheduling page.

Add to calendar: the integration with no account

A session offers Add to calendar — in the session ledger and in the decision panel beside the main action — when a visitor can still join it: it is open, its last meeting is not in the past, and it has a Start time and an End time. A session with dates but no times, a closed session and a session that has already run show no calendar button. The file is generated by the plugin itself at ?lue_calendar=<session id>, served as text/calendar with the session's own file name. No account, no configuration, no request leaves your site, and it works on a plain permalink setting.

The file holds one weekly event: the first meeting, from its start time to its end time, which repeats every week on the meeting days until the session's end date. It carries the program title as its summary, the session's location text and a link back to the program page. Times are written in the session's timezone — the site's own, unless the session sets Session timezone — and the file describes that timezone, so a calendar in another zone shows the right local hour. A skipped or repeated daylight-saving wall time is rejected because the stored value would be ambiguous.

A session that meets on more than one day a week (Tuesdays and Thursdays, say) ticks each day under Meets on in the session editor. Leave Meets on clear when it meets once a week, on the start date's weekday. Lumina never reads a schedule sentence such as "Tue & Thu · 18:30–20:00" to invent times or days; that label is what visitors read, and Meets on is what the calendar uses.

To test it: open a program with an upcoming timed session, press Add to calendar, and open the downloaded file. Your calendar should show the program title at the session's start time, repeating weekly until its last date.

Destination profiles

A destination profile is a named set of addresses: for each handover — registration, consultation, contact, directions, mailing list — the address a visitor is sent to and the provider's name. It exists so that a demonstration site and a real site can be the same installation in two states rather than two different builds.

Choose the profile in Settings → Site details → Where else this site hands over → Destination profile, or pin it where no editor and no importer can reach it by putting this in wp-config.php:

define( 'LUMINA_EDU_CORE_DESTINATION_PROFILE', 'placeholder' );

A profile's shape, for anyone registering one:

add_filter(
	'lumina_edu_core_destination_profiles',
	function ( $profiles ) {
		$profiles['my-demo'] = array(
			'label' => 'My demonstration services',
			'live'  => true,
			'seams' => array(
				'registration' => array(
					'url'  => 'https://booking.example.org/demo',
					'name' => 'Example Bookings',
				),
			),
		);
		return $profiles;
	}
);

Handovers a live profile does not name fall through to Site details as usual, so a profile can supply one destination and leave the rest alone.

Before you launch

  1. Replace every demo address in Site details with your own, or empty the field.
  2. Give every handover you use a provider name, so the sentence beside the button says where it goes.
  3. Check the destination profile is the one you mean.
  4. Click every action on a published page, in a private window, and watch where it lands.
  5. Recheck the links whenever a provider changes — nothing on this site can notice that for you.