Director of Marketing & engineer (Bagjump Action Sports GmbH) · 2025–present
Bagjump Marketing Analytics Portal
An in-house analytics + automation platform at Bagjump Action Sports — replaced a manual Excel report with a daily-refreshing dashboard wiring 7 ad/CRM platforms together.
What it is
An in-house Marketing Analytics Portal at Bagjump Action Sports, built end-to-end to replace a hand-maintained Excel report and tie ad spend through Zoho CRM leads and deals to end-to-end revenue.
Stack
- Monorepo: TypeScript, pnpm workspaces, Turborepo. Apps for the Next.js 15 web portal and a BullMQ worker; shared packages for DB, connectors, attribution, and helpers.
- Database: PostgreSQL with Drizzle ORM as the source of truth; Redis for queues and caching.
- Connectors (one package each): Google Ads API, GA4 Data API, Meta Marketing API, Microsoft Advertising (Bing), Zoho CRM, Zoho Campaigns, Gravity Forms (webhooks).
- Auth: Microsoft Entra ID (Azure AD) SSO via NextAuth — OAuth2/OIDC integrated against Bagjump’s existing Microsoft 365 tenant. OAuth2 refresh-token flows for Zoho CRM and Zoho Campaigns.
- Worker: BullMQ on a daily 01:00 UTC cron (configurable). Each connector pulls the last 7 days of data and upserts into
metrics_daily/conversions_dailyso late attributions catch up. - Webhooks: Gravity Forms entries POST a signed payload (
GRAVITY_FORMS_WEBHOOK_SECRET) → server creates a Zoho lead with hidden-field UTM capture (gclid,fbclid,msclkid,utm_*) for full ad-click-to-CRM lead-source visibility. - Infra: Caddy reverse proxy + Docker Compose (web + worker + Postgres + Redis), shipped to Hetzner Cloud via GitHub Actions (typecheck on PR, SSH deploy on merge to
main).
Why it matters
Before: a single hand-maintained xlsx. Marketing decisions were 1–2 weeks stale, attribution was manual, and customer-success couldn’t cleanly pull the customers most likely to upsell.
After: an internal dashboard with daily fresh data, a parity check (verify-vs-xlsx.ts) that fails loudly if any rollup drifts >1% from the spreadsheet, and a sales-enablement view that surfaces customers ready for cross-sell. CLTV reporting is baked in.
Adjacent work
I also built the Zoho ↔ Microsoft Power Apps middleware that fronts this — a Node/Express service exposing 14 REST endpoints across Zoho CRM, Books, and Desk modules with API-key auth and rate-limiting.
Marketing results (same role, parallel work)
- 40% lift in organic search results in the first 12 months.
- Multiple paid social + email campaigns generating thousands of qualified leads.
- Campaigns contributed to hundreds of thousands of dollars in revenue.
- Strategically overtook competitors on every relevant social channel.
← All work