Forms and Integrations
The site keeps public forms in Statamic but handles the interactive visitor experience through Livewire sections.
Statamic form definitions live in resources/forms/:
| Handle | Title | Livewire section |
|---|---|---|
member_registration | Member Registration | MemberRegistrationSection |
media_registration | Media Registration | MediaRegistrationSection |
newsletter | Newsletter Registration | NewsletterRegistrationSection |
Each Livewire component validates submitted fields, verifies Friendly Captcha, stores a Statamic form submission, sends an admin notification, and sends a visitor confirmation email.
Submissions are exported through Statamic’s built-in CSV and JSON exporters, configured in config/statamic/forms.php.
Mailables live in app/Mail/ and render templates from resources/views/mail/.
| Form | Admin email | Confirmation email |
|---|---|---|
| Member registration | MemberRegistrationAdmin | MemberRegistrationConfirmation |
| Media registration | MediaRegistrationAdmin | MediaRegistrationConfirmation |
| Newsletter | NewsletterAdmin | NewsletterConfirmation |
The admin recipient is read from Laravel mail configuration. The mail transport is configured through standard Laravel mail environment variables.
Friendly Captcha
Section titled “Friendly Captcha”App\Services\FriendlyCaptchaService verifies visitor captcha tokens against Friendly Captcha’s verification API. The required configuration keys are:
FRC_SITE_KEYFRC_API_KEY
Local development accepts the token value dev, which lets developers exercise the Livewire form flow without calling the external service.
Google Calendar
Section titled “Google Calendar”GoogleEventListSection reads a calendar ID from the page-builder section payload and calls App\Services\GoogleCalendarService.
The service uses:
GOOGLE_CALENDAR_API_KEY- Google Calendar events API
- a five-minute Laravel cache entry per calendar ID
If no API key is configured or the API request fails, the section returns an empty event list instead of breaking the page.
SmartVote
Section titled “SmartVote”MapSection and SmartVoteCandidatesSection use App\Services\SmartVoteService to fetch candidate data from SmartVote’s GraphQL API. The page-builder payload supplies election, district, and party IDs.
Candidate lists are sorted by list position after the API response is received.
Donation Sections
Section titled “Donation Sections”donation_payrexx and donation_raise_now are Blade-rendered page-builder sections. Their provider URLs or embed configuration come from section fields. Treat provider configuration as operationally sensitive when it contains account-specific details; public docs should describe the section behaviour without publishing private account configuration.
Analytics
Section titled “Analytics”Matomo configuration is read from:
MATOMO_URLMATOMO_SITE_ID
The defaults are safe for local development, but production values belong in the environment, not in public documentation.