External Integrations
Third-party services the platform depends on, grouped by purpose. Most are called from the API or worker; a few are used directly by the public website.
Storage & media
Amazon S3
Image and asset uploads. Configured via
S3_BUCKET, S3_REGION, AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY. Used through aws-sdk in the API.Email & deliverability
| Service | Role | Where |
|---|---|---|
| SendGrid | Transactional email | API services/sendGrid.js (SENDGRID_API_KEY) |
| AWS SES | Email transport | API via nodemailer-ses-transport |
| Ongage | Email marketing / ESP orchestration | API services/ongage.js (ONGAGE_* credentials, list & field IDs) |
| Fresh Address | Email address validation / hygiene | API (FRESH_ADDRESS_API) |
Newsletter rendering uses Handlebars, Foundation for Emails (Inky), Juice, and related inlining libraries inside the API before handing off to a transport.
Operations & monitoring
| Service | Role | Where |
|---|---|---|
| Sentry | Error & performance monitoring | API instrument.js (@sentry/node, profiling); initialized at startup |
| Monday.com | Ops / workflow integration | API services/monday.js |
Anti-abuse / CAPTCHA
Multiple CAPTCHA providers are configured (the active one has changed over time):
- Google reCAPTCHA —
GOOGLE_RECAPTCHA_KEY/recaptcha-verifyin the API; site key inweb2. - hCaptcha —
hcaptchapackage in the API; site key inweb2. - Cloudflare Turnstile — site key configured in
web2/settings.php.
Used directly by the public website
| Service | Role | Where |
|---|---|---|
| AccuWeather | 5-day forecast embedded in newsletters | web2/email_templates/dynamic-newsletter.php (calls dataservice.accuweather.com) |
| Google Analytics | Pageview analytics (UA + GA4 tags) | web2/includes/footer-analytics.php |
Planned / future
Google Gemini is scaffolded in web2/settings.php (an empty $gemini_apiKey) for a planned events-page chatbot ("Yodel"), but it is currently disabled — the chatbot include is commented out and the script file is absent. Treat it as a future integration, not a live dependency.
Being decommissioned: Matomo
A self-hosted Matomo (Piwik) analytics server at analytics.macaronikid.com historically received public-site pageview tracking and powered one admin dashboard widget. It is being retired; nothing load-bearing depends on it. See Analytics Decommission for the full plan and current status.