Spanish Shots — Full-Stack WordPress Platform with CRM by Ayoola Daniel Spanish Shots — Full-Stack WordPress Platform with CRM by Ayoola Daniel

Spanish Shots — Full-Stack WordPress Platform with CRM

Ayoola Daniel

Ayoola Daniel

Verified

Spanish Shots — Full-Stack WordPress Platform Build

Role: WordPress Engineer Client: Spanish Shots e.U. — Vienna, Austria Stack: WordPress · Fluent CRM · n8n · EzyCourse · Docker · Hetzner Cloud · Scaleway TEM · sGTM

The Brief

Spanish Shots is a Vienna-based online Spanish learning business. The founder needed a complete platform built from scratch, not a template, not a page builder hack. A production-grade system that could handle the full learner journey: from first website visit, through a qualifying call, to payment and course enrollment, entirely automated.
No existing infrastructure. Zero to live.

What We Built

A self-hosted, fully integrated platform running on a hardened Hetzner Cloud VPS (CPX32 — 4 vCPU / 8GB RAM / 160GB SSD, Helsinki EU), with four layers working together seamlessly:
Website — WordPress + Elementor Pro. 3 fully responsive pages (Home: 14 sections, About: 5 sections, Work With Us: 7 sections), header, footer, sticky CTA, floating nav, and 5 modals.
Built from a Figma design, approved before a single line of code was written.
CRM — Fluent CRM Pro with a custom 9-stage learner lifecycle (Lead → Check-in Requested → Call Scheduled → Call Completed → Approved → Checkout Sent → Paid → Enrolled → Refunded).
Manual and automatic state transitions. Full duplicate handling using email as primary key.
Automation Engine — 6 n8n workflows running in Docker, handling form notifications, EzyCourse payment sync, refund processing, a scheduled 2-hour reconciliation job, manual re-sync, and bounce handling.
Every EzyCourse webhook authenticated via x-ezycourse-signature. Idempotent and replay-safe throughout.
Learning Platform — EzyCourse integrated at learn.spanishshots.com (staged) with full webhook sync to the CRM. Payment confirmed → CRM updated → welcome email triggered → learner enrolled. No manual steps required.

The Technical Decisions Worth Noting

Self-hosted everything. n8n, PostgreSQL, sGTM, and Altcha CAPTCHA all run in Docker containers on the same VPS. No reliance on third-party SaaS for core automation.
Server-side tracking. All 16 tracked events route through a self-hosted Google Tag Manager server. No direct browser-to-Meta calls. IP addresses stripped before forwarding to ad platforms. Full Consent Mode v2 Advanced compliance.
Email infrastructure built properly. Transactional email via Scaleway TEM with SPF, DKIM, and DMARC all verified. Mail tester score: 9/10. BIMI DNS configured with hosted SVG logo. Bounce handling active — invalid addresses update CRM automatically. DMARC enforcement scheduled: p=quarantine from 1 July, p=reject from 16 July 2026.
Webhook resilience layered. 3-attempt retry logic (2 seconds apart) → 2-hour scheduled reconciliation job → one-click manual re-sync page. Silent failures are caught before they become problems.
Security hardened. SSH key-only access, root login disabled, fail2ban, UFW firewall (ports 22/80/443 only).
WordPress: 2FA, login rate limiting, activity logging, XML-RPC disabled, file editing disabled.
Backups verified. Daily encrypted Restic backups to Hetzner Object Storage (Helsinki). 7 daily / 4 weekly / 3 monthly retention.
Full restore tested and verified. Recovery time under 2 hours.

The Results

20 acceptance tests passed across 3 milestones — all QA-verified before handover
End-to-end automation live — a learner can go from form submission to enrolled in EzyCourse with zero manual intervention after the checkout link is sent
Zero duplicate contacts across all form submission scenarios
Email deliverability production-grade — 9/10 mail tester, DKIM valid, TLS enforced
Full GDPR compliance — consent-gated tracking, ClamAV file scanning, GDPR-deletable uploads, EU-only data storage
Operator-independent — a full plain-English Operations Manual delivered so the client can run the platform day-to-day without technical support

What Made This Project Different

Most WordPress builds stop at the website. This one started there.
The real challenge was making a complex, multi-system automation stack feel invisible to a non-technical operator. Every workflow failure sends an alert. Every mismatch between EzyCourse and the CRM gets auto-corrected. The client has a one-click re-sync page bookmarked and a prioritised guide for what to do when something goes wrong.
The platform is built to run itself and when it can't, it tells you exactly what to do next.

Stack Summary

Hetzner Cloud CPX32 (Helsinki, EU) · WordPress + Elementor Pro · Fluent CRM Pro · Fluent Forms Pro · n8n (self-hosted, Docker) · PostgreSQL · EzyCourse · Scaleway Transactional Email · sGTM (self-hosted) · GA4 · Meta CAPI · Altcha CAPTCHA · Real Cookie Banner Pro · Restic Backups · fail2ban · UFW · SSH key-only · 2FA
Like this project

What the client had to say

Great experience working with Daniel and his team. Skilled, reliable, and solution-oriented. Strong WordPress and system integration expertise. Smooth communication, timelines respected, and high-quality final delivery. Highly recommended!

Alex Rueda, Spanish Shots

May 3, 2026, Client

Posted Jul 13, 2026

Full-stack WordPress build. CRM, n8n automation, EzyCourse integration, server-side tracking, and hardened cloud infrastructure.

Likes

0

Views

19

Timeline

Mar 30, 2026 - May 3, 2026

Clients

Spanish Shots