Integrations

Where a lead goes after you press send.

The contact form writes to my own server first, then forwards to whichever webhooks are configured. Nothing is enabled by default — each route only fires when its environment variable is set, so an unconfigured deployment stays self-contained.

Routes

Webhook-first, platform-agnostic.

CRM

HubSpot and Pipedrive

The lead payload is posted to the configured endpoint and can be mapped onto a contact workflow or a deal pipeline.

Automation

Make and Zapier

A webhook can trigger anything downstream — a Slack alert, an email sequence, an Airtable row, a Notion page — the moment a lead lands.

Analytics

First-party by default

Page counts are stored on my own server, cookieless and with no per-visitor identifier. GA4 and Mixpanel hooks exist but stay dormant unless their variables are set.

Setup

Environment variables.

All optional. Set only what you need; anything left blank is skipped at runtime.

Variable Purpose
ZDECK_ADMIN_TOKENRequired to read stored leads and analytics
CRM_WEBHOOK_URLPrimary CRM endpoint
HUBSPOT_WEBHOOK_URLHubSpot lead route
PIPEDRIVE_WEBHOOK_URLPipedrive lead route
MAKE_WEBHOOK_URLMake.com automation trigger
ZAPIER_WEBHOOK_URLZapier webhook trigger
GA_MEASUREMENT_IDGoogle Analytics 4 — needs a consent banner in the EU
MIXPANEL_TOKENMixpanel project — needs a consent banner in the EU
Note on the last two. GA4 and Mixpanel set third-party cookies. Enabling either for visitors in the EU requires a consent banner before the script loads. They are deliberately left unset here, and the built-in first-party counter is used instead.
Need this wired up?

I can connect it to your stack.

Get in touch