Knowledge > Runbooks > Customer Ops > Church Support Escalation
Handle a Church Support Request
Triage and resolve an inbound support request from a church admin. Covers email, chat, and escalation paths.
Prerequisites
- Supabase access
- Stripe CLI
- Gmail access (john@churchwiseai.com via MCP or web)
vercel logsaccess for serverless error investigation
Triage Steps
1. Identify the church and property
Determine which product they are using:
- ChurchWiseAI (voice agent or chatbot) → they manage at churchwiseai.com/admin
- PewSearch (Premium Page / church listing) → they manage at pewsearch.com/admin
- IllustrateTheWord (sermon illustrations) → Supabase Auth, account at illustratetheword.com
Get the church's email or name, then look them up:
SELECT c.id, c.name, c.email, c.slug, pc.plan, pc.tier, pc.stripe_subscription_id
FROM churches c
LEFT JOIN premium_churches pc ON pc.church_id = c.id
WHERE c.email ILIKE '%[church-email-domain]%'
OR c.name ILIKE '%[church-name]%'
LIMIT 5;
2. Check subscription status
stripe customers list --email "[church-email]"
stripe subscriptions list --customer cus_xxxxxxxxxxxx
Verify their plan is active and matches what they think they have.
3. Diagnose the specific issue
"Can't log in / can't access admin"
- Check
church_admin_sessionsfor a valid, non-expired session token - Check that their token is correct in the URL:
churchwiseai.com/admin/[token] - If expired, generate a new magic link (see onboard-new-church.md manual fallback)
"Voice agent isn't answering / sounds wrong"
- Check
voice_call_logsfor recent call entries:SELECT id, status, duration_seconds, created_at, error_messageFROM voice_call_logsWHERE church_id = '[church-uuid]'ORDER BY created_at DESC LIMIT 10; - Check
church_voice_agentsfor their config (phone number, active status) - If calls aren't being logged at all, the Twilio forwarding may be misconfigured
- See
voice-ops/runbooks for deeper investigation
"Chatbot isn't working / wrong answers"
- Check
organization_settingsfor their chatbot config - Check
unified_rag_contentfor their knowledge base entries - Test the chatbot widget directly to reproduce the issue
"Email not received (magic link, welcome email)"
- Check Resend dashboard for send status to their email
- Check spam folder suggestion
- Verify their email address is correct in
churchestable - If Resend failed, resend manually
"Wrong charge / billing question"
- Pull their Stripe invoice history:
stripe invoices list --customer cus_xxxxxxxxxxxx --limit 5
- Compare against their expected plan from
C:\dev\PRICING.md
"Feature not available / missing feature"
- Verify their plan in
premium_churchesmatches what they purchased - Cross-reference against plan features in
knowledge/data/features.yaml - If plan is wrong, investigate webhook (may need manual correction)
4. Resolve or escalate
Resolve directly if the issue is:
- Login/access issue → generate new magic link
- Billing confusion → explain the charge from Stripe data
- Simple config issue → update
organization_settingsorchurch_voice_agents
Escalate to founder if the issue is:
- Refund request (see refund.md after confirmation)
- Data dispute or claim dispute
- Service outage affecting multiple churches
- Legal or compliance concern
5. Respond to the church
Draft and send response from john@churchwiseai.com. Include:
- Acknowledgment of their specific issue
- What was found and fixed (if resolved)
- Next steps (if escalated)
- Contact for follow-up
Common Quick Fixes
| Issue | Fix |
|---|---|
| Can't access admin | Regenerate session token in church_admin_sessions |
| Wrong plan shown | Update premium_churches.plan after confirming with founder |
| Voice agent silent | Check church_voice_agents.is_active = true and Twilio forwarding |
| Chatbot off-brand | Update organization_settings.system_prompt |
| No welcome email | Resend via Resend API or trigger magic link API manually |
See Also
- cancel-subscription.md — if they want to cancel
- refund.md — if they want a refund
- add-voice-number.md — if voice is misconfigured
voice-ops/README.md— voice-specific troubleshooting