Support Center

Find answers to common issues, learn how to configure your dashboard, and troubleshoot problems without waiting for support.

Installation & Connection

  1. Log into your Lead Connector account.
  2. Open the Marketplace tab in the left sidebar.
  3. Search for "Insurance Grok Bot".
  4. Click Install and approve the requested permissions.
  5. You'll be redirected to complete your subscription and set a password.
The app is free to install. Billing is handled separately through Stripe after installation.

This usually means the OAuth handshake completed but the redirect was blocked by a popup blocker or the browser tab closed prematurely.

Fix:

  1. Go to Login and sign in with the email associated with your Lead Connector account.
  2. If you haven't set a password yet, go to Setup Progress to see exactly where you are and pick up from there.
  3. Check that your browser allows popups from this domain.

This means your account exists but isn't linked to your Lead Connector account's API tokens yet.

Fix:

  1. Click the green "Connect Lead Connector" button on your dashboard.
  2. This starts the OAuth flow. You'll be redirected to Lead Connector to approve access.
  3. Once approved, your tokens are saved and the button disappears.

If the button keeps reappearing, your OAuth token may have expired. Click it again to re-authorize.

Lead Connector OAuth tokens expire periodically. The system automatically refreshes them, but in rare cases the refresh can fail.

Fix:

  1. Go to your Dashboard.
  2. Click "Connect Lead Connector" to re-authorize.
  3. This generates fresh tokens and the bot resumes working immediately.

If your dashboard shows a placeholder email (e.g. install_...@placeholder.grokbot), a missing User ID, or missing Location ID, this is caused by Lead Connector marketplace scope approvals still being processed.

What's happening:

  • When you install from the Lead Connector Marketplace, certain API permissions (users.readonly, locations.readonly) must be approved by Lead Connector before we can retrieve your full account details.
  • Until those scopes are approved, we save your connection with placeholder data so you don't lose your setup progress.
  • This is a temporary state — once scopes are approved, reconnecting will populate all fields automatically.

How to fix:

  1. Wait 24–48 hours for Lead Connector to approve the pending scopes.
  2. Once approved, go to your Dashboard and click "Connect Lead Connector" to re-authorize.
  3. Your User ID, Location ID, and email will be populated automatically.
  4. If the issue persists after 48 hours, contact us at support@insurancegrokbot.click and we'll manually resolve it.

Marketplace installs create your account automatically during the OAuth connection process. If you can't log in, it's likely because:

  • No password was set — your account was created via OAuth and doesn't have a password yet.
  • Email mismatch — the email in your Lead Connector account may differ from what you're trying to log in with.

How to fix:

  1. Go to Forgot Password and enter the email associated with your Lead Connector account.
  2. You'll receive a password reset link to set up your login credentials.
  3. If you're unsure which email was used, contact us at support@insurancegrokbot.click and we'll look it up.

Dashboard & Configuration

Your Location ID is automatically filled in during the Marketplace installation. If it shows as blank or a temporary value:

  1. Log into Lead Connector.
  2. Go to Settings → Business Info.
  3. Your Location ID is in the URL bar: app.leadconnector.com/v2/location/YOUR_LOCATION_ID/...
  4. Copy that ID and paste it into the Location ID field on your dashboard.
  5. Click Save Configuration.

  1. Go to your DashboardBot Configuration tab.
  2. Next to the Calendar dropdown, click the "Load" button.
  3. This fetches all calendars from your connected Lead Connector account.
  4. Select the calendar you want the bot to book appointments on.
  5. Click Save Configuration.
If the Load button shows "None", make sure you have at least one calendar created in your Lead Connector account under Calendars in the sidebar.

  1. In Lead Connector, go to Settings → My Staff (or Team Management).
  2. Click on your user profile.
  3. The User ID appears in the URL: ...users/YOUR_USER_ID
  4. Alternatively, your User ID was captured during installation. Check if it's already filled in on your dashboard.

The CRM User ID tells the bot which user account to send messages as inside your Lead Connector location.

Bot First Name: The name the bot uses when introducing itself to leads. Example: "Hey, this is Sarah from..."

Initial Message: The very first outreach message the bot sends when a new lead comes in. This is the opening line of the conversation.

To update either one:

  1. Go to your Dashboard.
  2. Edit the fields under Bot Configuration.
  3. Click Save Configuration.

Select the timezone that matches your business operating hours. This is used when the bot presents available calendar slots to leads so times display correctly.

Common US timezones:

  • America/New_York — Eastern
  • America/Chicago — Central
  • America/Denver — Mountain
  • America/Los_Angeles — Pacific

  1. Make sure you clicked the "Save Configuration" button (not just the browser back button).
  2. Look for a green "Settings saved successfully!" confirmation banner at the top of the page.
  3. If you see a red error banner, the save failed. Common causes:
    • A required field was left empty.
    • Your session expired. Log out and back in, then try again.
  4. Hard-refresh the page (Ctrl+Shift+R or Cmd+Shift+R) to confirm the values are saved.

Bot Behavior & Troubleshooting

Check these in order:

  1. Subscription active? Log into your dashboard. If you see a "Subscription Required" message, you need to subscribe first.
  2. OAuth tokens valid? Check the sidebar for "Token Expired". If expired, click Connect Lead Connector to re-authorize.
  3. Location ID set? Make sure your Location ID field isn't empty or showing a temporary value.
  4. Calendar selected? The bot needs a calendar to function. Click Load next to the calendar dropdown and select one.
  5. Webhook active? In your Lead Connector account, go to Settings → Webhooks and verify the InsuranceGrokBot webhook URL is listed and active.

The bot uses a memory system that stores conversation history and facts about each lead. If it seems to loop:

  • Short conversations: The first 2-3 exchanges may feel similar as the bot gathers initial information. This is normal discovery behavior.
  • After 5+ messages: If it's still repeating, the lead's answers may not have been clear enough for the bot to register. The lead can try giving more direct answers.
  • Database issue: In rare cases, the narrative memory may not have saved correctly. The bot will recover on the next message as it re-reads the full conversation history from Lead Connector.

Occasionally the AI model may produce an unexpected response. This is rare and typically self-corrects on the next message.

If it happens repeatedly:

  1. Check your Initial Message on the dashboard. If it contains special characters or formatting, simplify it to plain text.
  2. Verify your Bot First Name is a normal first name (no symbols, no full sentences).
  3. The issue usually resolves itself. The bot reads the full conversation each time and adjusts.

  1. Calendar selected? On your dashboard, click Load next to the calendar dropdown. Make sure a calendar is selected and saved.
  2. Availability set? The bot pulls available slots from your Lead Connector calendar. If no availability is configured, there are no slots to show. Go to Calendars in Lead Connector and set your available hours.
  3. Timezone correct? If slots show at wrong times, your timezone setting on the dashboard may not match your Lead Connector calendar's timezone. Update it and save.
  4. Slots fully booked? The bot shows the next 3 days of availability. If all slots are booked, the bot won't have any to offer.

The bot automatically stops responding when:

  • An appointment is booked.
  • The lead requests to stop or opts out.
  • A manual (human) reply is detected in the Lead Connector conversation from your side.

To manually pause the bot for a lead, simply send a message to that lead yourself inside Lead Connector. The bot recognizes human agent activity and steps back.

Billing & Subscription

  1. Log into your Dashboard.
  2. Click the Billing & Subscription tab.
  3. Click "Open Stripe Portal".
  4. In the Stripe portal, click Update payment method and enter your new card details.

  1. Go to your DashboardBilling & Subscription tab.
  2. Click "Open Stripe Portal".
  3. Click "Cancel plan" in the Stripe portal.

Your access continues until the end of the current billing period. No partial refunds are issued for the remaining days.

This can happen if there's a brief delay between Stripe processing and our system updating.

Fix:

  1. Wait 1-2 minutes and refresh the page. Stripe webhooks usually arrive within seconds, but occasionally take longer.
  2. Check that you used the same email for both your Stripe checkout and your dashboard login. If they don't match, the system can't link your payment to your account.
  3. Log out and back in to refresh your session.
  4. Check your email for a Stripe receipt confirming the charge went through.

Plan Price For
Individual $98.99/mo Solo agents working their own book of business
Agency Starter $797.99/mo Agencies with up to 14 sub-accounts (~$57/sub-account)
Agency Pro $1,597.99/mo Agencies with 15+ sub-accounts, unlimited (~$53/account at 30)

All plans include a 7-day free trial. Cancel anytime through the Stripe portal.

Agency Management

  1. Go to your Agency Dashboard.
  2. Scroll down to the sub-account list.
  3. For each sub-account showing "Pending", click "Send Invite".
  4. An email is sent to the agent's email on file with a link to claim their account.
  5. Alternatively, click "Invite All Pending Users" at the top to bulk-invite everyone at once.

  1. Ask them to check their spam/junk folder.
  2. Verify the agent email shown on the sub-account card is correct. If it says "No email detected", the Lead Connector account may not have an email associated.
  3. Click "Resend Invite" on their sub-account card to send another email.
  4. If the email is still not delivered, you can share the invite link directly. After clicking Resend, check for a "Manual invite link" popup with a direct URL.

This means the sub-account hasn't completed the OAuth connection to Lead Connector yet.

Fix:

  1. The sub-user needs to log into their account and click "Connect Lead Connector".
  2. Alternatively, you (the agency owner) can click "Enter Dashboard" on their card and connect on their behalf.

  1. On the Agency Dashboard, expand the sub-account card.
  2. Click "Enter Dashboard".
  3. You'll enter that sub-account's individual dashboard where you can configure their Location ID, Calendar, Bot Name, Timezone, and Initial Message.
  4. Save the settings. They take effect immediately.

Reset Data clears all conversation history, stored facts, and bot memory for that sub-account's location. The bot configuration (calendar, timezone, etc.) is preserved.

This action cannot be undone. Only use it if you need to completely reset a sub-account's conversation data.

Account & Login

  1. Go to Forgot Password.
  2. Enter the email address associated with your account.
  3. Check your inbox (and spam folder) for a reset link.
  4. Click the link and choose a new password.

The reset link expires after 30 minutes. If it expires, request a new one.

  • Login — For individual users and sub-account agents.
  • Agency Login — For agency owners who manage multiple sub-accounts.

If you're unsure which you are: if you were invited by an agency owner, use the regular Login. If you installed the app yourself and manage sub-accounts, use Agency Login.

  1. Check your email for an invite from your agency owner.
  2. Click the claim link in the email.
  3. Set a password on the claim page.
  4. You can now log in at Login and access your individual dashboard.

If you didn't get an email, ask your agency owner to resend the invite from their Agency Dashboard.

CRM Integration Guides

LeadConnector is the default CRM. Most users are connected automatically via the Marketplace install.

  1. Go to the LeadConnector Marketplace.
  2. Search for "Insurance Grok Bot" and click Install.
  3. Approve the requested permissions (contacts, calendars, messaging).
  4. You'll be redirected to set up your account and subscription.
  5. Your OAuth tokens, Location ID, and Calendar are set automatically.
If your token expires, click "Connect Lead Connector" on your dashboard to re-authorize.

Features: Two-way SMS, calendar booking, free slot detection, contact sync, OAuth auto-connect.

Connect Salesforce via OAuth 2.0 for full contact lifecycle management.

  1. In Salesforce, go to Setup → App Manager → New Connected App.
  2. Enable OAuth Settings and add scopes: full, api, refresh_token.
  3. Copy your Consumer Key (Client ID) and Consumer Secret.
  4. Generate an OAuth access token (use Salesforce's OAuth flow or Workbench).
  5. In your InsuranceGrokBot dashboard, go to the Connect tab.
  6. Select Salesforce and enter your Instance URL, Access Token, Refresh Token, Client ID, and Client Secret.
  7. Click Save Integration, then Test Connection.
For SMS, add your Twilio credentials (Account SID, Auth Token, Phone Number) in the integration settings. Messages are logged as Tasks in Salesforce.

Features: Contact search (SOQL), event booking, SMS via Twilio, activity timeline logging, auto token refresh.

Connect HubSpot using a Private App token or OAuth credentials.

  1. In HubSpot, go to Settings → Integrations → Private Apps.
  2. Click Create a private app.
  3. Under Scopes, enable: crm.objects.contacts (read/write), crm.objects.deals, sales-email-read.
  4. Click Create app and copy the Access Token.
  5. In your InsuranceGrokBot dashboard, go to the Connect tab.
  6. Select HubSpot and paste the Access Token.
  7. (Optional) Add your Owner ID for meeting assignments — find it under Settings → Users & Teams.
  8. Click Save Integration, then Test Connection.
SMS requires Twilio credentials. Messages are logged as Communications in HubSpot on the contact timeline.

Features: Contact search & dedup, meeting booking, SMS via Twilio, communication timeline logging.

Connect Pipedrive with an API token for contact and deal management.

  1. In Pipedrive, go to Settings → Personal Preferences → API.
  2. Copy your Personal API Token.
  3. Note your Company Domain (the subdomain from yourcompany.pipedrive.com).
  4. In your InsuranceGrokBot dashboard, go to the Connect tab.
  5. Select Pipedrive and enter your Company Domain and API Token.
  6. (Optional) Enter User ID, Pipeline ID, and Stage ID for deal assignment.
  7. Click Save Integration, then Test Connection.
New contacts automatically get a deal created. SMS requires Twilio credentials. Messages are logged as Notes.

Features: Contact search, auto deal creation, activity scheduling, SMS via Twilio, note logging.

Connect Zoho CRM using OAuth 2.0. Tokens are auto-refreshed (Zoho tokens expire hourly).

  1. Go to Zoho API Console and create a Self Client.
  2. Add scopes: ZohoCRM.modules.ALL, ZohoCRM.users.READ.
  3. Generate a Grant Token, then exchange it for an Access Token and Refresh Token.
  4. Copy your Client ID and Client Secret from the API Console.
  5. In your InsuranceGrokBot dashboard, go to the Connect tab.
  6. Select Zoho CRM and enter all four fields plus your Data Center region.
  7. Click Save Integration, then Test Connection.
The Refresh Token is required — Zoho access tokens expire every hour. The system auto-refreshes them using your refresh token.

Features: Contact search, event booking, native email sending, SMS via Twilio, note logging, auto token refresh.

Connect any app via Zapier webhooks. Route bot events to your CRM, email, Slack, or any of 6,000+ apps.

  1. In Zapier, create a new Zap and select "Webhooks by Zapier" as the trigger.
  2. Choose "Catch Hook" and copy the webhook URL provided.
  3. In your InsuranceGrokBot dashboard, go to the Connect tab.
  4. Select Zapier and paste the Catch Hook URL.
  5. (Optional) Create separate hooks for messages and bookings, and enter those URLs too.
  6. Click Save Integration.
  7. Back in Zapier, test the trigger to receive sample data, then add your action steps (e.g., create lead in your CRM, send email, etc.).
Zapier is ideal if your CRM isn't directly supported. Bot events (new lead, booking, message) are sent as JSON payloads to your hooks.

Features: Universal webhook relay, custom event routing, works with 6,000+ apps.

Insureio is an insurance-industry CRM for lead management and quoting. Connect via API key.

  1. Log into your Insureio account and go to Account Settings → API.
  2. Copy your API Key.
  3. Find your Brand/Profile ID (required for lead creation) in your Insureio brand settings.
  4. In your InsuranceGrokBot dashboard, go to the Connect tab.
  5. Select Insureio and enter your API Key, Brand ID, and (optionally) your subdomain.
  6. Click Save Integration, then Test Connection.
Insureio does not have a native calendar API. For appointment booking, add a Booking Webhook URL (e.g., Calendly) in your settings. SMS requires Twilio credentials.

Features: Lead creation, consumer lookup, insurance-specific fields, SMS via Twilio, webhook booking relay.

If you're using Salesforce, HubSpot, Pipedrive, Zoho, or Insureio, the bot sends SMS via Twilio. LeadConnector users don't need this — SMS works natively.

  1. Sign up at twilio.com and verify your account.
  2. Go to Console Dashboard and copy your Account SID and Auth Token.
  3. Under Phone Numbers, buy a number with SMS capability (or use an existing one).
  4. In your InsuranceGrokBot Connect tab, enter the three Twilio fields:
    • Twilio Account SID
    • Twilio Auth Token
    • Twilio Phone Number (in +1XXXXXXXXXX format)
  5. Click Save Integration. The bot will now send SMS through Twilio.
Twilio charges per SMS (typically ~$0.0079/message). Make sure your Twilio account has a billing method set up.

Carrier Intelligence & Underwriting

The bot has a built-in database of 270+ insurance carriers (Northwestern Mutual, MetLife, Prudential, Globe Life, State Farm, and many more). When a lead mentions a carrier by name, the bot automatically:

  • Identifies the carrier and classifies it (major insurer, regional mutual, specialty, etc.)
  • Detects product type (guaranteed issue, employer group, bundled policy)
  • Adjusts the conversation based on known limitations of that carrier's products

This happens automatically with no configuration required. The bot simply recognizes carrier names in conversation and uses its knowledge to have more informed discussions.

While the database covers 270+ carriers, some smaller regional or niche companies may not be included. In these cases:

  • The bot continues the conversation normally using its general insurance knowledge.
  • It will still ask the right discovery questions about coverage type, amount, and limitations.
  • The conversation quality is not significantly affected. Carrier recognition is an enhancement, not a requirement.

If you frequently work with a carrier that isn't recognized, contact support and we can add it to the database.

The bot pulls real-time underwriting data from live data sheets that are regularly updated. This covers:

  • Whole Life underwriting rules by carrier
  • Term & IUL underwriting rules by carrier
  • Universal Life underwriting rules by carrier

When a lead mentions a health condition (diabetes, cancer history, heart issues, etc.), the bot uses this data to understand which carriers may still offer coverage. This helps pre-qualify leads before the advisor call.

Underwriting data is cached for 60 minutes and automatically refreshes. If the source data is temporarily unavailable, the bot falls back to a local cache.

Underwriting rules change frequently as carriers update their guidelines. If the bot provides outdated information:

  1. The underwriting data refreshes automatically every 60 minutes from the live source.
  2. If the source sheets haven't been updated yet, the bot uses the most recent cached data.
  3. The bot never gives specific pricing or guarantees to leads. It uses underwriting data to guide the conversation, not to make promises.

If you notice consistently incorrect data for a specific carrier or condition, contact support so the source data can be updated.

Webhook API & Troubleshooting

Every account gets a unique webhook URL displayed on the Connect tab of your dashboard. When your CRM sends a JSON payload to this URL:

  1. The bot automatically detects the field format (camelCase, snake_case, UPPERCASE, or nested objects).
  2. It resolves the contact using phone number + name matching (99% accuracy).
  3. It processes the message through the AI engine and sends a response back via your configured SMS channel.

The endpoint accepts POST requests with a JSON body. No API key is needed since the URL itself is unique to your account.

Check these in order:

  1. Check your logs: Go to the Logs tab on your dashboard. Look for webhook_received events. If you see them, the webhook is arriving correctly.
  2. Look for errors: Filter logs by Status: error. Common issues include expired OAuth tokens, missing calendar selection, or inactive subscription.
  3. Verify the payload: Your CRM must send at least a phone number and message text. If either is missing, the bot can't process the message.
  4. Check SMS delivery: If the bot processes the message but the response doesn't arrive, verify your SMS configuration (LeadConnector OAuth or Twilio credentials).

The Test Connection button verifies that your saved credentials can reach your CRM's API. If it fails:

  • Salesforce: Verify your Instance URL (must include https://), Access Token, and that your Connected App has the right scopes.
  • HubSpot: Ensure your Private App token hasn't been rotated. Check that the required scopes are still enabled.
  • Pipedrive: Verify your Company Domain (just the subdomain, not the full URL) and API Token.
  • Zoho: Zoho tokens expire every hour. Make sure you provided a Refresh Token (not just an Access Token). Verify your Data Center region matches your account.
  • Insureio: Check your API Key and Brand ID. The Insureio API may require you to whitelist our server IP.
  • Zapier: Zapier webhooks don't have a test endpoint. Make sure the Catch Hook URL is correct and the Zap is turned on.

The Logs tab on your dashboard shows every event in real-time. Each log entry includes:

  • Event Type: webhook_received, booking_attempt, booking_success, booking_failed, message_sent, message_failed, error
  • Status: success, error, warning, info
  • Timestamp: Shown in UTC. All times end with "Z" to indicate UTC.
  • Details: Click any log entry to expand and see the full payload, error message, or response data.

Use the Filter dropdowns to narrow down to specific event types or statuses. Logs are paginated at 50 entries per page.

  1. Go to the Connect tab on your dashboard.
  2. Click the button for your new CRM (e.g., switch from LeadConnector to Salesforce).
  3. Follow the setup guide and enter your new credentials.
  4. Click Save Configuration and then Test Connection.

Switching CRMs does not delete your conversation data or bot settings. Only the CRM connection and SMS delivery method changes.

Remember to update the webhook URL in your new CRM's automation settings so inbound messages are routed correctly.

Voice AI

Voice AI uses Twilio Media Streams to capture the raw audio from an inbound or outbound phone call and forward it in real-time to our server. Our server sends the audio directly to the XAI Grok speech-to-speech model, which generates a spoken response without any intermediate transcription step.

Because there is no speech-to-text or text-to-speech conversion in between, the result is a natural, low-latency conversation with no transcription delay. The AI speaks back to the caller as fluidly as a human agent would.

You need two things to get started:

  1. A Twilio account with a phone number — This is the number that will receive and place Voice AI calls. You can purchase a number directly from your Twilio console.
  2. Enable Voice AI in your dashboard — Go to Dashboard > Voice tab and toggle Voice AI on. Enter your Twilio credentials and select the phone number you want to use.
Your Twilio phone number must have voice capabilities enabled. Most standard local and toll-free numbers include this by default.

Voice AI usage is billed based on two components:

  • XAI Grok speech-to-speech: $0.07 per minute of conversation.
  • Twilio voice transport: ~$0.014 per minute (varies slightly by number type and destination).

A typical 5-minute call costs approximately $0.32. This makes Voice AI significantly cheaper than hiring live agents while delivering instant, 24/7 availability.

Yes. Voice AI uses the same calendar booking engine as the text-based chatbot. During a live call, the AI can:

  1. Check your real-time calendar availability.
  2. Offer the caller open time slots.
  3. Book the appointment on the spot once the caller confirms.

The booking is created instantly in your connected calendar, and both you and the lead receive confirmation — all without leaving the phone call.

There are 7 voices to choose from:

  • Ara
  • Eve
  • Leo
  • Rex
  • Sal
  • Mika
  • Vale

You can select your preferred voice in Dashboard > Voice tab. Each voice has a distinct tone and personality, so try a few to find the one that best fits your brand.

Send a POST request to the /voice/outbound-call endpoint. This can be triggered from:

  • CRM automation: Set up a workflow in your CRM that fires a webhook to /voice/outbound-call when a lead reaches a specific stage or meets certain criteria.
  • External webhook: Any system that can make HTTP POST requests can trigger an outbound call — Zapier, Make, n8n, or custom scripts.

The request body should include the lead's phone number and any context you want the AI to have for the call. The AI will dial the lead and begin the conversation automatically.

Outbound calls follow all the same Voice AI settings (voice selection, calendar booking, system prompt) configured in your dashboard.

Error Codes & Log Messages

Reference guide for error messages you may see in your Activity Logs or browser console. Each code is explained with the cause and recommended fix.

Log Message / CodeCauseFix
Auth failure (HTTP 401)GHL OAuth token expired or revokedGo to dashboard → Connect tab → click Reauthorize. The bot auto-retries with a refreshed token once per message.
Auth failure (HTTP 403)Access denied — insufficient scopes or account suspendedReauthorize via OAuth, ensuring you grant all requested permissions. Check if your GHL account has marketplace access enabled.
Token refresh failedGHL refresh token expired (tokens expire after 90 days of inactivity)Reauthorize via Sidebar → Connect LeadConnector or visit /oauth/initiate.
No valid token availableOAuth refresh returned empty or the refresh token itself is expiredFull reauthorization required. Visit /oauth/initiate and complete the OAuth flow.
missing token or location_idSMS send attempted before OAuth was completedComplete the OAuth connection for your GHL location. Check Bot Config tab to confirm Location ID is set.

Log Message / CodeCauseFix
DUPLICATE webhook ignoredGHL sent the same webhook twice (common with retries)No action needed — this is normal deduplication behavior. The message was already processed.
Invalid signatureWebhook signature verification failedVerify your MARKETPLACE_WEBHOOK_SECRET env var matches what's configured in the GHL marketplace app settings.
contact_id unknown or missingWebhook payload missing the GHL contact IDCheck your GHL workflow trigger. Ensure "Customer Replied" trigger is used, not a form submission trigger, and that contact data is included.
Job queue fullRQ worker queue is saturated (>500 jobs pending)Check Redis health. Restart workers with python worker.py production. May indicate a surge of webhooks.
Worker timeoutAI processing took too long (>120s)Usually a transient xAI API slowdown. The lead's next message will be processed normally. Monitor frequency — if frequent, check XAI_API_KEY rate limits.

Log Message / CodeCauseFix
MESSAGE BLOCKED BY SAFETY NETThe LLM reply contained system prompt artifacts or reasoning tags (<thinking>)This is a protective filter. Check your prompt configuration for syntax errors. The next message attempt will be clean.
SKIP DUPLICATE SMSIdentical message was already sent to this contact in the last 5 minutesNo action needed — this prevents double-sending if a webhook fires twice.
SMS failed: rate_limit (HTTP 429)SMS provider or GHL rate limit hitThe system retries automatically with backoff. If persistent, check if you're using a shared short code vs. a dedicated long code. Upgrade to A2P 10DLC for higher throughput.
SMS failed: networkNetwork timeout reaching SMS delivery APITransient issue — the system retries 3 times. If persistent, check your server's outbound connectivity.
Cannot send SMS: invalid contact_idContact ID was "unknown" or emptyEnsure GHL contact is properly created before the bot fires. Check your GHL workflow trigger to confirm it includes contactId.

Log Message / CodeCauseFix
XAI_API_KEY not configuredMissing environment variableSet XAI_API_KEY in your .env file. Obtain from x.ai console.
Grok API error: 429xAI rate limit reachedYour account has hit the tokens-per-minute limit. Upgrade your xAI plan or stagger message processing. The system retries automatically.
LLM returned empty responsexAI returned an empty completion (rare model issue)The system sends a fallback message to the lead. If frequent, check xAI status page.
Narrative observer failedError in the conversation summary pipelineNon-critical — the bot continues without an updated narrative. Usually a transient API timeout. Check xAI status.
AI minutes balance: 0Voice AI minute credits exhaustedPurchase additional AI Minutes from the AI Minutes tab in your dashboard.

Log Message / CodeCauseFix
Voice not activatedTwilio sub-account not provisionedGo to Voice tab → Click Activate Voice Service. This creates a Twilio sub-account and provisions the dialer.
No phone number configuredVoice is activated but no number purchasedGo to Voice tab → Numbers → Buy a Number. Numbers cost ~$1.15/month from Twilio.
WebSocket disconnectedReal-time voice WebSocket dropped during a callTransient network issue. The call will end gracefully. Check your server's WebSocket timeout settings if persistent.
xAI Realtime API connection failedxAI Realtime API unreachableCheck xAI status page. Verify XAI_API_KEY has Realtime API access. Retry in a few minutes.
Transcription failed: Download failedRecording URL inaccessible or Twilio auth failedEnsure TWILIO_MASTER_ACCOUNT_SID and TWILIO_MASTER_AUTH_TOKEN are correct. The recording must be at least 60 seconds old.
Voicemail detected — hanging upAI detected voicemail greeting patterns in real-time transcriptNormal behavior — the dialer automatically retries based on your dial attempt settings. Adjust in Voice tab → Dialer Settings.

Log Message / CodeCauseFix
Subscription inactive — paywall shownStripe subscription cancelled, past_due, or unpaidGo to Billing tab → Update payment method. Or resubscribe at /checkout.
Stripe webhook signature invalidSTRIPE_WEBHOOK_SECRET mismatchVerify the webhook secret in your Stripe dashboard matches your STRIPE_WEBHOOK_SECRET env var.
customer.subscription.deletedStripe subscription was deleted (not just cancelled)The dashboard will show a paywall. Subscribe again at /checkout.
invoice.payment_failedCard declined on renewalUpdate your payment method in Stripe billing portal. Stripe will retry payment 3 times over 7 days before cancelling.

Log Message / CodeCauseFix
DB connection pool exhaustedAll 20 DB connections in use — high traffic spikeThe system queues up to 500 waiters (10s timeout). Transient during high traffic. Consider scaling workers or increasing DB_POOL_MAX.
DB connection failedPostgreSQL server unreachableCheck DATABASE_URL env var. Verify PostgreSQL server is running and accessible from your server's network.
Redis connection failedRedis server unreachable — job queuing unavailableCheck REDIS_URL env var. Restart Redis: redis-server or systemctl restart redis. The system auto-reconnects.
save_message failedError saving message to contact_messages tableCheck PostgreSQL logs. Usually a constraint violation or connection issue. The message processing continues even if storage fails.

Still need help?

Contact Support