Third-Party Services & Debugging

Quick reference for the external services Eventuall depends on and where to look when something breaks.

Services Reference

Service Role in Eventuall Dashboard Docs
Mux Video streaming, recording, asset management dashboard.mux.com docs.mux.com
LiveKit Real-time video/audio rooms, WebRTC cloud.livekit.io docs.livekit.io
Twilio SMS/OTP authentication, messaging/conversations console.twilio.com twilio.com/docs
Shopify E-commerce, order management, product sync admin.shopify.com shopify.dev/docs
SendGrid Transactional email delivery app.sendgrid.com docs.sendgrid.com
Cloudflare Workers, D1, R2, KV, Queues, Pages, Tunnels dash.cloudflare.com developers.cloudflare.com
Doppler Secrets and environment variable management dashboard.doppler.com docs.doppler.com
Google Cloud OAuth authentication (Google sign-in) console.cloud.google.com cloud.google.com/docs

Common Debugging Quick Reference

Viewing Logs

Dev server logs are written to /tmp/eventuall-dev-logs/ with timestamped filenames:

# Full status of all services
./scripts/dev-server.sh status

# View recent logs
./scripts/dev-server.sh logs

# Tail logs in real-time
./scripts/dev-server.sh tail

Workers logs in production/preview use wrangler tail:

wrangler tail --env production

Client telemetry is stored in the client_logs table in D1. Query it with:

SELECT * FROM client_logs
WHERE level = 'error'
ORDER BY clientTimestamp DESC
LIMIT 50;

Database (D1)

# Query local D1 (development)
wrangler d1 execute eventuall-workers-db --local --command "SELECT * FROM users LIMIT 5"

# Query remote D1 (production)
wrangler d1 execute eventuall-workers-db --remote --command "SELECT * FROM users LIMIT 5"

# Apply pending migrations locally
pnpm migrate:local

# Generate a new migration
pnpm migrate:generate

Use Drizzle Kit for schema exploration:

npx drizzle-kit studio

Note: Local D1 is a SQLite file — changes don't sync to remote. If debugging a production issue, always use --remote.

Workers & Durable Objects

# Deploy workers
wrangler deploy

# Tail worker logs (real-time)
wrangler tail

# Inspect Durable Object storage (local dev)
# DO state persists across requests — restart wrangler to clear it

Durable Object state is scoped per ID. If state seems stale after a code change, the old serialized state may be incompatible with new code. Restart the local Workers dev server to reset.

Webhooks

Several services send webhooks into the application:

Service Webhook Endpoint What it handles
Mux Worker routes (/routes/webhooks.ts) Video asset ready, upload complete, stream events
LiveKit Worker routes (/routes/webhooks.ts) Room started/ended, participant joined/left
Shopify Next.js API route (/api/webhook/shopify/) Order created/updated, product sync

When debugging webhook issues:

  1. Check the service's dashboard for delivery status and recent payloads
  2. Check worker/server logs for parsing or validation errors
  3. Verify the webhook signing secret matches what's configured in Doppler

Environment Variables

Environment variables flow through a specific chain:

Doppler → Terraform → start-dev.sh / .dev.vars → Runtime

To check current values:

# See what Doppler has for the current environment
doppler secrets

# Check what Terraform outputs (from terraform/ directory)
terraform output

# Verify what the dev server loaded
# Check start-dev.sh or .dev.vars files in each app directory

If a variable is missing at runtime, trace it backwards through this chain.

When X Breaks, Check Y

Symptom Where to look
Video not working LiveKit dashboard for room/participant state, Mux dashboard for asset/stream status
Chat not working Twilio console for conversation service status and message logs
Orders not syncing Shopify admin for order status, webhook delivery logs in Shopify and worker logs
Emails not sending SendGrid activity for delivery status, bounces, and blocks
Auth failing Google Cloud console for OAuth consent screen and credential status, then clear cookies for *.eventuall.live
DNS/routing issues Cloudflare dashboard for DNS records, tunnel status, and Pages deployment status
Missing env vars Doppler dashboard to verify secrets exist for the correct project and environment
Workers errors wrangler tail for real-time logs, Cloudflare dashboard for analytics and error rates
Database issues wrangler d1 execute --local or --remote to query directly, check migration status with pnpm migrate:local