ChatGridAI Setup Guide
Internal knowledge often exists but is hard to access, hard to control, and too expensive to deploy broadly. ChatGridAI brings your company documents into chat so your team gets reliable answers — without interrupting colleagues.
Your goal: Get your team asking questions in Google Chat or Teams — and getting instant, accurate answers from your own company documents.
Here's everything you need to make that happen.
Nothing here is permanent. Nothing you do during setup can affect production systems or incur unexpected charges. You're using your own OpenAI account, and everything can be changed or deleted later.
Before you start, make sure you have:
Here's exactly what you'll do:
Go to chatgridai.com and click "Sign in with Google Workspace" or "Sign in with Microsoft". Your 14-day free trial starts instantly — 10 seats included, no credit card.
Think of ChatGridAI as a remote control for your OpenAI account, embedded inside Google Chat or Teams. You create the resources below on OpenAI's platform — you own them, you control them, and all AI costs go directly to your OpenAI account.
API Key: platform.openai.com/api-keys → "Create new secret key" → Copy it (starts with sk-)
Vector Store: platform.openai.com/storage → "Create vector store" → Name it → Copy the ID (starts with vs_)
A group is a department (e.g., HR, IT, Engineering). Each group gets its own AI with its own docs and members.
Dashboard → Groups → Create Group → Click your new group → Configuration tab → Edit
- Paste your API Key
- Select model — gpt-4o-mini recommended (best balance of quality and cost)
- Paste your Vector Store ID
- Click Save
Tell ChatGridAI who should have access. Only these people can talk to the AI in this group.
Same group page → Users tab → Enter email addresses (Google) or display names (Teams) → Click "Add"
Connect ChatGridAI to your team's chat platform so everyone can @mention the bot.
Google Chat: Dashboard → Workspace Overview → Click "Install Bot" → Follow prompts
Microsoft Teams: Dashboard → Workspace Overview → Click "Install Teams App" → Follow prompts
You're live!
Open Google Chat or Teams → Start a new message with the ChatGridAI bot → Ask it anything.
Your team can now @mention ChatGridAI in any conversation to get instant, document-backed answers.
What to try first
After setup, send one of these messages to the ChatGridAI bot to see it in action:
If you haven't uploaded documents yet, the AI will respond using general knowledge. Upload your docs (Section 4.4) to get answers specific to your company.
What happens next:
- Team members you added can @mention ChatGridAI in any chat
- Each question uses tokens from your OpenAI account (typically fractions of a cent per question)
- You can see all activity in Dashboard → Analytics
- Add more groups, docs, or members anytime — no downtime, no restarts
ChatGridAI connects Google Chat or Microsoft Teams to OpenAI, turning your existing chat into an intelligent AI trained on your company's documents.
Core Features
- Works in your existing chat: Google Chat or Teams — no new apps to learn
- Learns your company knowledge: Upload PDFs, Word docs, procedures — AI references them when answering
- You control costs: Use your own OpenAI API key — all AI costs billed directly to your OpenAI account
- Multi-group setup: Different teams get different AI configurations with separate knowledge bases
Pricing Model
You pay two separate things:
- OpenAI API costs: Billed directly to your OpenAI account (~$0.15-$10 per 1M tokens depending on model)
- ChatGridAI platform fee:
- 14-day free trial (10 seats, no credit card required)
- After trial: Minimum 20 seats ($100/month)
- Sold in packs: 5 seats for $25/month (always $5 per seat)
- Details: Section 7 — Billing
How It Works
User asks question in Google Chat or Microsoft Teams
ChatGridAI authenticates with your OpenAI API key
OpenAI searches your Vector Store (uploaded documents)
Response generated using your selected model (GPT-4o, GPT-4o-mini, or GPT-3.5-turbo)
Answer returned to user in chat
All costs billed to your OpenAI account
Key point: ChatGridAI is a bridge connecting your chat platform to your OpenAI account. You maintain full control and ownership of your data and API costs.
Supported Platforms
- Google Chat: Direct messages, group chats, spaces (requires Google Workspace)
- Microsoft Teams: Direct messages, group chats, channels (requires Microsoft 365)
Security
- Your documents: Stored only in OpenAI Vector Stores, NOT on ChatGridAI servers
- Your conversations: Stored in OpenAI threads, NOT on ChatGridAI servers
- Your API key: Encrypted in HashiCorp Vault, never visible in full after setup
- Access control: Domain-verified users only, explicit group membership required
Bottom line: ChatGridAI cannot read, reuse, or train on your conversations or documents. Your data stays in your OpenAI account.
ChatGridAI uses your existing Google Workspace or Microsoft Teams account for authentication. No separate username/password to remember.
Step-by-Step Process
- Visit chatgridai.com
- Click "Sign in with Google Workspace"
- Redirected to Google's OAuth 2.0 authentication page
- Sign in with your company Google Workspace account (must be @yourcompany.com, NOT @gmail.com)
- Grant ChatGridAI permission to access:
- Your email address
- Basic profile information
- Company domain verification
- Automatically redirected to ChatGridAI dashboard
What We Collect
- Email address: Used for account identification, notifications, and audit logs
- Company domain: (e.g., yourcompany.com) — Used to group your organization's users together
- OAuth tokens: Temporary authentication tokens
- Refreshed automatically when needed
- Expires after 2 hours of inactivity
- Stored as secure httpOnly cookies (not accessible via JavaScript)
Automatic Trial Setup
When you register for the first time:
- 14-day free trial starts immediately
- No credit card required
- 10 user limit during trial period
- Full feature access — unlimited groups, file uploads, analytics
- Default "Unassigned" group created automatically
- You're added as admin with full permissions
Domain Verification
Only verified Google Workspace domains can register.
We verify through Google's OAuth that your email belongs to a legitimate company domain. Personal Gmail accounts (@gmail.com) are rejected.
Why: ChatGridAI is designed for business teams, not individual consumers.
What Happens After Login
- Redirected to dashboard at
/dashboard - See workspace overview showing:
- Company name (extracted from domain)
- Trial status and days remaining
- User count (starts at 1 — you)
- Group count (starts at 1 — Unassigned group)
- Quick setup guide appears (optional — can skip)
- Ready to create groups and configure OpenAI settings
Step-by-Step Process
- Visit chatgridai.com
- Click "Sign in with Microsoft"
- Authenticate through Azure Active Directory
- First-time registration only: Company name form appears
- Enter your company name (e.g., "Acme Corporation")
- 2-100 characters allowed
- Letters, numbers, spaces, hyphens, periods, apostrophes only
- Click "Complete Registration"
- Automatically redirected to ChatGridAI dashboard
What We Collect
- Display name: Your full name from Azure Active Directory
- Email address: Your corporate Microsoft email
- Azure AD Object ID: Unique identifier for your account (used for chat message routing)
- Tenant ID: Your organization's Azure AD tenant identifier (ensures users from same org are grouped)
- Company name: Provided during first registration (used for display purposes)
- OAuth tokens: Temporary authentication tokens (same as Google — 2 hour expiry, httpOnly cookies)
Synthetic Domain
We create an internal domain identifier from your company name:
Example: "Acme Corporation" becomes "acmecorporation.teams"
Why: Provides consistent internal identification. This is NOT your actual Microsoft domain and doesn't affect anything external.
Automatic Trial Setup
Same as Google Workspace:
- 14-day free trial
- 10 user limit
- Full feature access (unlimited groups, file uploads, analytics)
- Default "Unassigned" group created
- You're admin
Security Features
JWT Token Verification:
- Microsoft's public keys fetched from
https://login.microsoftonline.com/common/discovery/v2.0/keys - Token signature validated using RS256 algorithm
- Token expiration checked (max 1 hour old accepted)
- Audience claim validated (must match our Client ID)
- Issuer claim validated (must be Microsoft's tenant-specific issuer)
- "Not before" (nbf) claim validated
Secure Cookies:
- HttpOnly flag (not accessible via JavaScript — prevents XSS attacks)
- Secure flag in production (HTTPS only)
- SameSite=Lax (CSRF protection)
- 2 hour expiration
What Happens After Login
Same flow as Google Workspace — redirected to dashboard with workspace overview.
After initial registration, login is faster:
Google Workspace Users
- Click "Sign in with Google Workspace"
- Google recognizes you're already authenticated
- Immediately redirected to dashboard (no additional screens)
Microsoft Teams Users
- Click "Sign in with Microsoft"
- Azure AD recognizes you're already authenticated
- No company name form (only shown on first registration)
- Immediately redirected to dashboard
Session Persistence
- Authenticated session lasts 2 hours of activity
- Automatic token refresh when you interact with dashboard
- After 2 hours of inactivity: must login again
- Closing browser: session maintained (cookie persists)
Logout
Dashboard → Click your name/profile → "Logout"
- httpOnly cookie cleared
- Redirected to homepage
- Must re-authenticate to access dashboard again
What We Store
- Email address
- Domain/Tenant ID
- OAuth tokens
- Trial dates
- Subscription status
What We Don't Store
- Passwords (we never see them — OAuth handles authentication)
- Google/Microsoft account credentials
- Your chat messages (stored only in OpenAI threads)
- Document contents (stored only in OpenAI Vector Stores)
Data Location
- ChatGridAI database: User metadata, group config, trial status
- HashiCorp Vault: Encrypted OpenAI API keys
- OpenAI systems: Your documents, chat history, embeddings
See full details: Privacy Policy
The dashboard is your management interface for ChatGridAI. Access it at /dashboard after logging in. The dashboard has a left sidebar with 5 sections:
Workspace Overview
Landing page showing your company name, subscription plan, user count, and group count. Has quick action buttons to jump to other sections. During trial period, displays banner with days remaining and upgrade button.
Groups
Where you create and manage groups. Configure each group with OpenAI API settings, upload files to train the AI, and assign team members. Each group gets its own AI configuration with separate knowledge base. Detailed setup instructions in Section 4.
Team Members
View all users in your workspace. Assign users to different groups or remove them. Search and filter capabilities. Details in Section 5.
Analytics
View token usage and OpenAI costs over time. See which groups and users consume the most tokens. Export data for your records. Details in Section 6.
Billing
Manage your ChatGridAI subscription. Upgrade from trial to paid plan, change billing cycle, or cancel subscription. This is separate from OpenAI billing. Details in Section 7.
Mobile: Click hamburger menu (top left) to open the sidebar. All features work on mobile devices.
Why these settings matter: When you configure a group, you connect ChatGridAI to your OpenAI account. Everything flows through the API Key and Vector Store ID you set here — chatting, file processing, AI responses. This determines how your AI behaves, what it knows, and what it costs.
Dashboard → Click "Create Group" → Enter group name → Group created.
Group shows "Setup Incomplete" status until you configure OpenAI settings and add users.
4.2.1 OpenAI API Key
Why: Authenticates every interaction. Without it, nothing works. All costs billed to this key's OpenAI account.
Get it:
- Go to platform.openai.com/api-keys
- Click "+ Create new secret key"
- Name it descriptively (e.g., "ChatGridAI - Customer Support Group")
- Copy immediately (starts with "sk-", only shown once)
- Paste into ChatGridAI → Configuration tab → Click "Edit" next to OpenAI API Key → Save
One key or separate keys?
- One key for all groups: Simpler management, all costs in one place, can't track per-group
- Separate keys per group: Track costs per department, better budget control, more keys to manage
Cost management:
You pay OpenAI directly based on usage. Set spending limits in your OpenAI account: platform.openai.com/account/billing/limits
Security:
- Key encrypted in HashiCorp Vault (not our database)
- Never displayed in full after saving (only first 5 and last 6 characters shown)
- If lost, create new key in OpenAI and update in ChatGridAI
4.2.2 Model Selection
Determines intelligence level and cost per interaction. More capable models understand complex questions better but cost more.
GPT-4o (Most Capable)
- Input: $2.50 / 1M tokens
- Output: $10.00 / 1M tokens
- Use when: Quality critical, complex reasoning needed
GPT-4o-mini
- Input: $0.15 / 1M tokens
- Output: $0.60 / 1M tokens
- Best balance of quality/cost
- This is our default selection
GPT-3.5-turbo
- Input: $0.50 / 1M tokens
- Output: $1.50 / 1M tokens
- Simple FAQ-style questions only
- Note: Older model, not as capable as 4o-mini
How to select: Configuration tab → Model dropdown → Select → Click "Save".
Changes apply to new conversations immediately.
Learn more: OpenAI Models Documentation
4.2.3 Vector Store ID
Why: This is where your documents live. When users ask questions, the AI searches this Vector Store to find relevant information from your uploaded files. Without a Vector Store, the AI can't access any company-specific knowledge.
How it works:
- You upload document to Vector Store
- OpenAI processes and indexes the content
- User asks question in chat
- AI searches Vector Store for relevant chunks
- AI uses found information to answer
Where to create:
- Go to platform.openai.com/storage
- Click "Create vector store"
- Name it descriptively (e.g., "HR Policies and Benefits")
- Click "Create"
- Copy the Vector Store ID (starts with "vs_")
- Paste into ChatGridAI → Configuration tab → Click "Edit" next to Vector Store ID → Save
Tip: Keep one vector store per group. HR documents shouldn't appear when Engineering searches for technical docs.
4.2.4 Setup Complete Status
Green checkmark appears when OpenAI API Key is saved. If still showing "Setup Incomplete," check your API key configuration.
Configure how your AI behaves and responds. Instructions define the AI's personality, expertise, and response style.
How Training Works
Original Instructions: Your instructions (write from scratch or use template)
Improved Instructions: AI-enhanced version (after clicking "Improve Instructions")
Process:
- Write instructions or select template
- Click "Improve Instructions" to get AI-enhanced version (optional)
- Click "Train with Original" OR "Train with Improved"
- Instructions are saved to your group configuration
- All future conversations use these instructions
Cost note: "Improve Instructions" uses tokens from your API key to rewrite instructions (~$0.01 per rewrite). "Train" buttons have no token cost — they just update your group config.
Templates
10 pre-built instruction templates for common use cases: Sales, HR, Tech Support, Marketing, Finance, Operations, Customer Success, Legal, Project Management.
How to use: Template dropdown → Select template → Instructions populate in Original Instructions → Edit as needed → Train
Learn more: OpenAI Documentation
Direct Upload
Click "Choose Files to Upload" → Select files (multiple allowed) → Files upload automatically.
Supported formats: PDF (.pdf), Word (.docx, .doc), Text (.txt), Markdown (.md), CSV (.csv), PowerPoint (.pptx), HTML (.html)
File size limit: 50MB per file
Important: File content is NOT stored on ChatGridAI servers. Only metadata is saved. Content lives in OpenAI's systems.
Platform Sync (Cloud Storage)
Connect cloud storage to browse and upload files directly:
- Google Drive, Microsoft OneDrive, Microsoft SharePoint
- Dropbox, Microsoft OneNote, Atlassian Confluence
Auto-conversions: Google Docs → .docx, Sheets → .xlsx, Slides → .pptx, OneNote → .pdf, Confluence → .html
Note: Files are not continuously synced. You must manually browse and re-upload if files change. This avoids unnecessary OpenAI costs.
Confluence/OneNote note: Currently converted to HTML/PDF because these platforms don't offer direct file downloads via API. For Confluence, if you need PDF format, you can manually download pages as PDF from Confluence web interface (page menu → Export → PDF) and upload via ChatGridAI or directly to OpenAI Vector Store. Once Confluence/OneNote add PDF export to their APIs, we'll automatically update.
Upload Directly in OpenAI (Alternative)
You can upload files directly to your Vector Store without using ChatGridAI:
- Go to platform.openai.com/storage
- Click on your Vector Store
- Click "Add files" or drag and drop
- Upload files (up to 512MB per file)
Files work identically — AI can access them. Won't appear in ChatGridAI's file list. This is always an option if you prefer managing files directly in OpenAI.
Add user:
- Google Workspace: Enter email address (user@company.com)
- Microsoft Teams: Enter display name (John Smith)
- Click "Add" → User assigned to group
Remove user:
- Click "Remove" next to user
- User moved to "Unassigned" group
- Cannot use AI until reassigned
Trial limit: 10 users maximum during 14-day trial.
The Team Members section shows all users in your workspace. View who's assigned to which groups, reassign users, and manage team access in one place.
What You See
Stats Cards (Top of Page)
- Total Members: All users across all groups
- Active Groups: Groups that have at least one member
- Unassigned: Users currently in "Unassigned" group only
Members Table
Table displays all users with these columns:
- Checkbox: Select individual users for bulk actions
- User: Email address (Google Workspace) or Display Name (Microsoft Teams). Admin users show "(Admin)" label.
- Delete: Button to permanently remove user from system (Enterprise/Professional plans only, 2 deletes per month for Professional). Cannot delete admin users.
- Current Group: Which group the user is currently assigned to
- Assign to Group: Dropdown to reassign user to different group
Search and Filter
Tools above the table:
- Search box: Type to filter by email/name. Updates table in real-time.
- Group filter dropdown: Show only members of specific group. Combines with search filter.
- Sort columns: Click "User" or "Current Group" column headers to sort ascending/descending. Arrow shows current sort direction.
Reassigning Users
Individual Reassign
Click dropdown in "Assign to Group" column → Select new group → User immediately moved to that group. Their chat thread stays intact.
Bulk Reassign
- Check boxes next to users you want to move
- Bulk actions bar appears showing "X selected"
- Select target group from "Move to group..." dropdown
- Click "Reassign Selected" button
- Confirm in popup
- All selected users moved to new group
Removing Users
Move to Unassigned (Free)
Select users → Bulk reassign dropdown → Choose "Unassigned" → Click "Reassign Selected". Users moved to Unassigned group. They cannot use the AI until reassigned to configured group.
Permanent Deletion (Paid Plans Only)
Delete Credits System:
When you purchase seats, you receive monthly delete credits equal to your seat count divided by 5 (rounded down):
- 20 seats (minimum) = 4 delete credits/month
- 25 seats = 5 delete credits/month
- 30 seats = 6 delete credits/month
- 50 seats = 10 delete credits/month
- Credits reset at start of each billing cycle
- Unused credits do NOT roll over
How to delete users:
- Check boxes next to users
- "Delete Selected" button appears (red)
- Click "Delete Selected"
- System shows remaining delete credits
- Two confirmation popups (permanent action warning)
- Users permanently removed from system
- Delete credits deducted
Restrictions:
- Cannot delete admin users
- Must have at least one admin in workspace
- Trial users cannot delete (no credits during trial)
- If no credits remaining, wait until next billing cycle or buy more seats
Select All
Checkbox in table header (left side) → Selects/deselects all visible users in current filtered view. If you're filtered to specific group, only those users get selected.
Mobile View
Table converts to card layout on mobile devices. Each user = separate card showing all same information. All actions (reassign, delete, select) work identically.
View OpenAI token usage and estimated costs. All costs billed directly to your OpenAI account — ChatGridAI tracks and displays the data only.
Overview Stats (Last 30 Days)
- Total Tokens: Combined input and output tokens across all groups
- Total Cost: Estimated OpenAI costs in USD
- Active Groups: Groups with usage activity
- Avg Per Day: Average daily token consumption
Usage by Group Chart
Doughnut chart showing token distribution across groups. Only displays groups with usage activity (groups with zero tokens not shown). Click any segment to see user breakdown for that group in the chart below.
Top Users Chart
Bar chart showing top 8 users by token consumption within selected group. Displays username only (part before @ in email). Updates when you click different group in the doughnut chart above. Shows "No user activity yet" if group has no usage.
How Data is Tracked
Every time a user sends a message in Google Chat or Microsoft Teams:
Message sent to OpenAI API
OpenAI returns usage data
Prompt tokens, completion tokens, total tokens
ChatGridAI logs the data
Recorded with group ID, user email, and timestamp
Cost calculated
Total tokens × $0.000002 (approximate rate, varies by model)
Data appears immediately
Visible in the Analytics section right away
Cost Calculation
Estimated costs in ChatGridAI are approximate. For exact billing, check platform.openai.com/usage.
Actual costs vary by model selected in group configuration:
GPT-4o
- Input: $2.50 / 1M tokens
- Output: $10.00 / 1M tokens
GPT-4o-mini
Recommended- Input: $0.15 / 1M tokens
- Output: $0.60 / 1M tokens
GPT-3.5-turbo
- Input: $0.50 / 1M tokens
- Output: $1.50 / 1M tokens
Empty State
If no usage data exists yet, charts display "No usage data yet" or "No user activity yet". Start chatting with the AI in Google Chat or Microsoft Teams to generate analytics data.
Mobile View
Charts stack vertically on mobile devices. All data remains visible and interactive.
Two separate bills: You pay OpenAI directly for API usage, and ChatGridAI for platform access. These are independent.
Pricing
Trial (14 days, free)
- 10 seats included
- No credit card required
- Unlimited groups
- Unlimited file uploads
- Full analytics access
- No delete credits (can only move users to Unassigned)
Paid Plan
Seat Packs: 5 seats for $25/month ($5 per seat)
- Minimum purchase: 4 packs (20 seats) = $100/month
- Each pack = 5 seats for $25
- Always exactly $5 per seat
- Scale up by purchasing additional packs as needed
- Billed monthly via Stripe
- Unlimited groups
- Unlimited file uploads
- Full analytics
Delete Credits
Monthly delete credits = your total seat count divided by 5 (rounded down)
- 20 seats (minimum) = 4 delete credits/month
- 25 seats = 5 delete credits/month
- 30 seats = 6 delete credits/month
- 50 seats = 10 delete credits/month
Current Subscription Card
Dashboard Billing section shows:
- Subscription Status: Active Trial, Active, Cancelling, Expired, or Inactive
- Total Seats: Your current seat count
- Delete Credits: Remaining credits this billing cycle / Monthly allowance
- Next Billing: Date and amount of next charge
- Billing Cycle: Monthly (annual not currently supported)
Upgrading from Trial
- Click "Upgrade" button (appears in yellow trial banner or Billing section)
- Redirected to Stripe Checkout (secure payment processor)
- Enter payment details (credit/debit card)
- Select quantity (minimum 4 packs = 20 seats = $100/month)
- Confirm payment
- Redirected back to dashboard
- Subscription activated immediately
- Trial banner disappears
- Delete credits become available (4/month for minimum 20 seats)
Adding More Seats
When you have an active paid subscription:
- Dashboard → Billing → Click "Add Seats" button
- Redirected to Stripe Checkout
- Adjust quantity (1–20 seat packs)
- Each pack = 5 seats = $25/month
- Confirm purchase
- Seats added immediately
- Delete credits recalculated automatically
- Prorated charge for current billing period
Reducing Seats
Important: You must have fewer users than your new seat limit before reducing seats.
- Dashboard → Billing → Click "Billing Portal"
- Stripe customer portal opens
- Click "Update plan" → Adjust seat pack quantity down
- If current users > new seat limit: Change rejected
- Warning: "You have X users but new limit is Y seats. Remove Z users first."
- Go to Team Members → Move excess users to Unassigned or delete them
- Try reducing seats again
- If users ≤ new limit: Change scheduled for end of current billing period
- Delete credits recalculated at next billing cycle
Delete Credits Explained
How it works: Your monthly delete credits equal your total seat count divided by 5 (rounded down).
Why Delete Credits Exist
Delete credits prevent abuse while allowing reasonable user turnover. When you remove a user, their seat becomes available for reassignment. Delete credits let you permanently remove users who have left your organization.
Credit Reset Schedule
- Credits reset at start of each billing cycle
- Unused credits do NOT roll over
- Reset date shown in Billing section
- If you add seats mid-cycle, credits recalculate immediately
- If you reduce seats, credits recalculate at next billing cycle
What If I Run Out of Credits?
Two options:
- Wait until next billing cycle (credits reset automatically)
- Buy more seats (adds more credits immediately via formula)
Alternative: Move users to "Unassigned" group (free, doesn't use credits, user can't access AI until reassigned)
Billing Portal
Click "Billing Portal" button to access Stripe customer portal where you can:
- Update payment method
- View payment history
- Download invoices
- Adjust seat pack quantity (add/remove seats)
- Cancel subscription
Cancellation
- Click "Billing Portal"
- Scroll to bottom → Click "Cancel subscription"
- Confirm cancellation
- Subscription marked "Cancelling"
- Access continues until end of current billing period
- No refunds for partial months
- After period ends:
- Cannot send messages in Google Chat or Microsoft Teams
- Dashboard becomes read-only (view only, no edits)
- All data preserved (groups, users, configuration, analytics)
- Reactivate anytime by subscribing again
Status Indicators
- Active: Subscription active, will auto-renew
- Cancelling: Subscription active until period end, will not renew
- Active Trial: In 14-day trial period
- Expired: Trial or subscription ended, access disabled until renewed
- Inactive: No active subscription or trial
Seat Management Best Practices
- Start small: Use trial to test with 10 users, buy seat packs as needed
- Monitor usage: Analytics section shows which users are active
- Plan for turnover: Delete credits = ~20% monthly turnover (2 deletions per 10 seats)
- Move vs Delete: Move inactive users to Unassigned (free, reversible) vs permanent deletion (uses credits)
- Timing matters: Add seats anytime (prorated), reduce at billing cycle end (avoid early removal)
Pricing Examples
Small Team
- 20 seats — $100/month
- 4 delete credits/month
Medium Team
- 30 seats — $150/month
- 6 delete credits/month
Large Team
- 50 seats — $250/month
- 10 delete credits/month
Enterprise
- 100 seats — $500/month
- 20 delete credits/month
All payments processed by Stripe. ChatGridAI does not store credit card details. PCI DSS compliant.
Actions let employees submit structured requests directly from chat — without filling in forms or switching apps. The AI collects the details through conversation, shows the employee a summary to confirm, then fires a signed webhook to any external system you configure (Jira, ServiceNow, an HR platform, a custom API, etc.).
Who should set this up: Actions require a developer or IT admin to configure the webhook endpoint and JSON template. The conversation experience for employees is seamless once set up — they just chat naturally.
How It Works (Employee Perspective)
Employee makes a request in chat
e.g. "I need to take next Friday off" or "My laptop won't connect to VPN"
AI collects any missing details
Asks follow-up questions naturally to gather required fields. Already-provided details are not asked again.
Summary card shown for confirmation
The AI presents a formatted summary. Employee replies confirm to submit or cancel to dismiss. Nothing is sent without explicit confirmation.
Webhook fires to your system
A signed JSON payload is delivered to your configured URL. The ticket, request, or task appears in your system automatically.
8.1 Enable Actions for a Group
Actions are configured per group. To enable them:
- Open the dashboard and select your group
- Go to the JSON Builder section in the sidebar
- Create at least one template (see Section 8.2)
- Go to the Webhooks section and enter your webhook URL
- Toggle Actions enabled on
Actions are off by default. Enabling them adds the request-submission capability to the AI for that group only. Other groups are unaffected.
8.2 Creating Templates (JSON Builder)
A template defines two things: what fields the AI should collect from the employee, and what JSON payload gets sent to your webhook when they confirm.
Step 1 — Create a new template
In the JSON Builder, click + New. Give it a display name (e.g. "Vacation Request") and a slug is generated automatically (e.g. vacation_request). The slug is what the AI uses internally to identify the request type.
Step 2 — Define mandatory fields
Add the fields the AI needs to collect. Each field has a name and a collection mode:
- Required — AI will infer from context if possible, otherwise ask
- Always ask — AI must ask the employee explicitly, even if the answer seems obvious (use for dates, names, anything that must be confirmed)
- Ask if known — AI asks but proceeds if the employee doesn't know
- Auto-fill (name) — Automatically populated from the employee's display name. Never shown to or asked of the employee.
Example fields for a leave request:
request_type— Required (annual, sick, unpaid)start_date— Always askend_date— Always askis_paid— Requiredemployee_name— Auto-fill (name)
Step 3 — Build the payload
Use the Row Builder to define key/value pairs, or switch to Raw JSON to paste your own structure. Use {{mustache}} variables to inject values collected from the conversation.
Example payload for a Jira Service Management request:
{
"summary": "{{title}}",
"description": "{{description}}",
"request_type": "{{fields.request_type}}",
"start_date": "{{fields.start_date}}",
"end_date": "{{fields.end_date}}",
"is_paid": "{{fields.is_paid}}",
"requested_by": "{{user.email}}",
"source": "{{platform}}",
"action_id": "{{action_id}}"
}
8.3 Variable Reference
The following variables are available in your JSON template. Empty optional fields are automatically stripped from the payload before delivery.
| Variable | Value |
|---|---|
{{event_type}} | Always action.created |
{{action_id}} | Unique UUID for this submission (use for idempotency in your system) |
{{timestamp}} | ISO 8601 UTC timestamp of submission |
{{title}} | Short summary generated by the AI (e.g. "Annual Leave 14–18 April") |
{{description}} | Full description of the request |
{{intent}} | The template slug matched (e.g. vacation_request) |
{{user.email}} | Employee email address (Google Chat). Empty on Teams. |
{{user.name}} | Employee display name (Teams). Empty on Google Chat. |
{{platform}} | teams or google_chat |
{{group.name}} | Name of the group the employee belongs to |
{{group.id}} | Numeric group ID |
{{fields.FIELD_NAME}} | Any field collected during the conversation. Replace FIELD_NAME with your field name (e.g. {{fields.start_date}}). |
8.4 Webhook Configuration
Go to the Webhooks section in the dashboard sidebar to configure delivery settings for the selected group.
Webhook URL
The HTTPS endpoint that receives the payload. Must return a 2xx status code to be considered a successful delivery. ChatGridAI retries up to 3 times on 5xx errors with exponential backoff before marking the delivery as failed.
Signing secret (recommended)
If provided, every request includes an X-ChatGridAI-Signature header containing an HMAC-SHA256 signature of the payload. Verify this on your server to confirm the request is genuine and hasn't been tampered with.
The signature is computed as:
HMAC-SHA256(secret, "{timestamp}.{body}")
Where timestamp is the value of the X-ChatGridAI-Timestamp header and body is the raw JSON string.
Bearer token (optional)
If your endpoint requires authentication, enter a token here. It is sent as Authorization: Bearer <token> on every request.
Custom headers (optional)
Add any additional HTTP headers your endpoint requires (e.g. X-Api-Key). Values are stored encrypted and never shown in full after saving.
8.5 Testing & Delivery Logs
Test button
Use Send test event in the Webhooks section to fire a sample payload to your endpoint immediately. The response status code and body are shown inline so you can confirm delivery before going live.
Delivery history
The Webhooks section shows the last 50 deliveries across all groups — timestamp, group, request title, HTTP status, and success/failure status. Use this to diagnose failed deliveries without needing server-side logging.
Failed deliveries: If a delivery fails after 3 attempts, the draft is reset to ready. The employee can reply confirm in chat to trigger a retry without re-entering any details.
8.6 End-to-End Example — Leave Request to Jira Service Management
This example walks through a complete setup connecting an HR leave request to Jira Service Management.
1. Create the template in JSON Builder
- Display name: Leave Request
- Slug:
leave_request(auto-generated) - Fields:
request_type(Required),start_date(Always ask),end_date(Always ask),is_paid(Required),employee_name(Auto-fill name)
2. Build the JSON payload
{
"fields": {
"project": { "key": "HR" },
"issuetype": { "name": "Leave Request" },
"summary": "{{title}}",
"description": {
"type": "doc",
"version": 1,
"content": [{
"type": "paragraph",
"content": [{ "type": "text", "text": "{{description}}" }]
}]
},
"customfield_10001": "{{fields.request_type}}",
"customfield_10002": "{{fields.start_date}}",
"customfield_10003": "{{fields.end_date}}",
"customfield_10004": "{{fields.is_paid}}",
"customfield_10005": "{{fields.employee_name}}",
"reporter": { "emailAddress": "{{user.email}}" }
}
}
3. Configure the webhook
- URL:
https://your-domain.atlassian.net/rest/api/3/issue - Bearer token: Your Jira API token (Base64 encoded
email:token) - Custom header:
X-Atlassian-Token: no-check
4. Send a test event, then go live
Click Send test event and confirm a 201 response from Jira. Enable Actions for the group. Employees can now submit leave requests directly from Teams or Google Chat.
What the employee sees: They type "I want to take annual leave from April 14th to 18th." The AI asks whether it's paid leave, then shows: "Annual Leave 14–18 April • Type: annual • Paid: yes • Reply confirm to submit or cancel to dismiss." One reply later, the Jira ticket exists.
8.7 Example — IT Request to ServiceNow
This example creates an incident in ServiceNow when an employee reports an IT issue.
1. Create the template
- Display name: IT Support Request
- Slug:
it_request - Fields:
issue_description(Always ask),urgency(Required — low / medium / high),affected_system(Ask if known),employee_name(Auto-fill name)
2. JSON payload
{
"records": [{
"short_description": "{{title}}",
"description": "{{description}}\n\nIssue: {{fields.issue_description}}\nAffected system: {{fields.affected_system}}",
"urgency": "{{fields.urgency}}",
"caller_id": "{{user.email}}",
"category": "software",
"subcategory": "{{intent}}",
"u_source": "ChatGridAI ({{platform}})",
"u_chatgridai_id": "{{action_id}}"
}]
}
3. Configure the webhook
- URL:
https://your-instance.service-now.com/api/now/table/incident - Bearer token: ServiceNow Basic Auth token (Base64
user:password) or OAuth token - Custom headers:
Accept: application/jsonandContent-Type: application/json
Urgency mapping: ServiceNow uses numeric urgency values (1 = High, 2 = Medium, 3 = Low). If your ServiceNow instance requires numbers, either map them in a middleware layer or instruct the AI via system instructions to collect urgency as 1, 2, or 3.
8.8 Example — Generic REST API / Custom Endpoint
If you have your own internal system or want to use a middleware like Zapier, Make, or n8n, use a generic webhook setup. This is the most flexible option.
1. Create the template
Define whatever fields make sense for your use case. The JSON payload can be any valid JSON structure — nested objects, arrays, flat key/value pairs.
2. Minimal payload (everything available)
{
"event": "{{event_type}}",
"id": "{{action_id}}",
"submitted_at": "{{timestamp}}",
"platform": "{{platform}}",
"group": "{{group.name}}",
"user": {
"email": "{{user.email}}",
"name": "{{user.name}}"
},
"request": {
"type": "{{intent}}",
"title": "{{title}}",
"description": "{{description}}",
"fields": {
"field_one": "{{fields.field_one}}",
"field_two": "{{fields.field_two}}"
}
}
}
3. Using with Zapier / Make / n8n
Point the webhook URL at your Zapier Catch Hook, Make webhook module, or n8n Webhook node. ChatGridAI sends the payload; your automation tool handles routing it to Slack, email, Google Sheets, or any downstream system. Use the signing secret to verify requests are genuine before processing them.
4. Verifying the signature (Node.js example)
const crypto = require('crypto');
function verifySignature(req, secret) {
const timestamp = req.headers['x-chatgridai-timestamp'];
const signature = req.headers['x-chatgridai-signature'];
const body = req.rawBody; // raw string, not parsed
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(`${timestamp}.${body}`)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Use {{action_id}} as an idempotency key. If your endpoint receives the same action_id twice (e.g. due to a network retry), discard the duplicate. ChatGridAI also enforces idempotency on its side, but defence in depth is good practice.
No. ChatGridAI installs as a separate bot in your workspace. It doesn't modify any existing chats, channels, or settings. Users interact with it by @mentioning it — it never sends unsolicited messages or accesses conversations it's not invited to.
The AI generates answers based on documents you've uploaded to the Vector Store. Answer quality depends directly on your uploaded content. You can improve accuracy by:
- Uploading more comprehensive, up-to-date documents
- Writing clearer AI instructions in the Training tab (e.g., "Only answer from uploaded documents. If unsure, say so.")
- Using a more capable model (GPT-4o instead of GPT-4o-mini) for nuanced topics
The AI will never fabricate policy or make up information that contradicts your uploaded docs — if the answer isn't in the documents, you can instruct it to say "I don't have that information."
Each group in ChatGridAI represents a department or team. Groups are completely isolated:
- Separate documents: HR's employee handbook doesn't appear when engineering asks about APIs
- Separate instructions: Each group's AI can have different behavior and tone
- Separate members: Only assigned users can access that group's AI
- Separate tracking: Usage and costs are tracked per group in Analytics
A user is assigned to one group at a time. Admins can reassign users between groups at any point.
You have full control over both cost lines:
- ChatGridAI fee: Fixed $5/seat/month. You choose how many seats. No hidden charges. Cancel anytime.
- OpenAI API costs: Billed directly to your OpenAI account based on usage. You can set hard spending limits at platform.openai.com/account/billing/limits.
For a team of 10 using GPT-4o-mini, typical OpenAI costs run $10–30/month. You see exact usage in both the ChatGridAI Analytics dashboard and your OpenAI billing page.
No. ChatGridAI is a bridge — it routes messages between your chat platform and your OpenAI account. Your documents and conversations live in OpenAI's systems, not ours.
- ChatGridAI cannot read your documents or conversations
- ChatGridAI cannot reuse or train on your data
- Your OpenAI API key is encrypted in HashiCorp Vault and never displayed in full
- Deleting a group or cancelling removes all references — your OpenAI data remains yours
For full details, see our Privacy Policy.
Those are great general-purpose tools, but they weren't designed to solve the specific problem ChatGridAI addresses:
- Cost: ChatGPT Team is $25–30/seat/month. ChatGridAI is $5/seat + only the OpenAI tokens you actually use — making company-wide deployment 3–5x cheaper.
- Scoping: General tools give every user the same AI. ChatGridAI lets you create separate assistants per department, each with its own documents and rules.
- Control: You choose the model, set spending limits, track per-user usage, and can change AI behavior per group — all from one dashboard.
- Integration: ChatGridAI lives inside your existing Google Chat or Teams — no new app for your team to learn or switch to.
No sections match your search. Try different keywords.