Integrating an AI Agent and Chatbot with Your Granicus Government Website
Complete guide to adding an AI chatbot to Granicus-powered government websites, including govAccess CMS integration, meeting FAQ automation, and govDelivery coordination.
Granicus serves thousands of government agencies with a suite of tools that go far beyond basic website hosting. If your organization uses Granicus—whether for your primary website through govAccess, meeting management through Legistar, or citizen communications through govDelivery—you're working with an interconnected ecosystem that creates unique opportunities for AI chatbot integration.
This guide covers the technical steps to add CityDesk.AI to your Granicus website, plus strategies to leverage Granicus's specific features for better citizen engagement.
Understanding the Granicus Ecosystem
Before diving into integration, it helps to understand how Granicus organizes its tools:
govAccess CMS: The content management system powering your website
Legistar/govMeetings: Meeting agendas, minutes, and video streaming
govDelivery: Email and SMS citizen notifications
govService: 311 and service request management
A chatbot integrated with your Granicus website can complement all of these. Citizens often have questions about content that spans multiple systems—"When is the planning commission meeting and how do I submit public comment?"—and a well-configured chatbot can answer these without requiring citizens to navigate between systems.
Integration Options for Granicus Sites
Granicus offers multiple ways to add custom JavaScript, depending on your specific configuration and permissions.
Option A: Global Script Integration (Recommended)
This adds the chatbot to every page of your Granicus website.
Step 1: Access Site Settings
Log in to your Granicus govAccess admin panel
Navigate to Settings > Site Configuration or Global Settings
Look for Custom Scripts, Header/Footer Code, or Tracking Scripts section
Step 2: Add the Chatbot Script
In the footer scripts section (not header), add:
<!-- CityDesk.AI Chatbot -->
<script
src="https://cdn.citydesk.ai/widget/v2/chatbot.min.js"
data-site-id="your-agency-id"
data-position="bottom-right"
async>
</script>
Step 3: Save and Preview
Save your changes
Open your public website in a new browser tab
Verify the chatbot appears and responds to test questions
Option B: Template-Level Integration
If your Granicus instance uses custom templates, you may need to add the script directly to template files.
Step 1: Access Template Manager
In govAccess admin, go to Design > Templates or Theme Editor
Open your active template for editing
Navigate to the footer section or base template
Step 2: Insert Before Closing Body Tag
Locate the </body> tag and insert the script immediately before it:
<!-- Other Granicus scripts above -->
<!-- CityDesk.AI Chatbot -->
<script
src="https://cdn.citydesk.ai/widget/v2/chatbot.min.js"
data-site-id="your-agency-id"
data-position="bottom-right"
async>
</script>
</body>
</html>
Step 3: Publish Template Changes
Save and publish the template
Clear any CDN or caching layer if applicable
Test on the live site
Option C: Page-Specific Integration
For chatbot deployment on specific high-traffic pages only:
Edit the target page in govAccess
Switch to HTML/Source view in the content editor
Add the script at the end of the page content
Repeat for each target page
This approach works well for pilot programs or pages with specific needs (like a dedicated "Ask Questions" page).
Leveraging Granicus Meeting Data
One of Granicus's strengths is meeting management. Here's how to ensure your chatbot handles meeting-related questions effectively.
Common Meeting Questions Citizens Ask
Your chatbot will automatically learn from your website content, but Granicus users typically see high volumes of these questions:
"When is the next city council meeting?"
"How do I watch the meeting online?"
"Where can I find last month's meeting minutes?"
"How do I submit public comment?"
"What's on the agenda for the planning commission?"
Optimizing for Meeting Content
To help the chatbot answer these questions accurately:
1. Ensure meeting pages are crawlable
Some Granicus meeting widgets load content dynamically. Verify that upcoming meeting information is present in the page HTML, not just loaded via JavaScript.
2. Maintain a static "How to Participate" page
Create a dedicated page explaining:
Public comment procedures
How to access live streams
Meeting locations and parking
Accessibility accommodations
This gives the chatbot a reliable source for participation questions.
3. Keep your meetings calendar current
The chatbot pulls from your published content. Outdated meeting schedules lead to frustrated citizens getting wrong answers.
Coordinating with govDelivery
If you use govDelivery for citizen notifications, the chatbot can complement (not replace) your communication strategy.
Chatbot Handles Immediate Questions
Citizens who miss an email or want instant answers use the chatbot:
"Is city hall open today?"
"What's the phone number for utilities?"
"How do I report a pothole?"
govDelivery Handles Proactive Updates
Continue using govDelivery for:
Meeting reminders
Emergency notifications
Newsletter distribution
Subscription-based updates
Cross-Promotion
Train the chatbot to mention govDelivery signups when relevant:
When a citizen asks about meeting schedules, the chatbot can respond with the meeting information plus: "Want meeting reminders? Sign up for notifications at [govDelivery link]."
Granicus-Specific Configuration
Matching Your Agency Branding
Granicus sites vary widely in design. Customize the chatbot appearance:
<script
src="https://cdn.citydesk.ai/widget/v2/chatbot.min.js"
data-site-id="your-agency-id"
data-primary-color="#003366"
data-header-text="Questions? Ask here"
data-greeting="Hello! I can help you find information about city services, meetings, and more."
async>
</script>
Handling Multi-Department Sites
Many Granicus implementations serve multiple departments or even multiple jurisdictions. If your site has distinct sections, you might consider:
Single chatbot, broad knowledge: One chatbot trained on all site content. Works well when departments share common questions.
Section-specific messaging: Use different greeting messages on different sections:
<!-- On Parks & Recreation pages -->
<script
src="https://cdn.citydesk.ai/widget/v2/chatbot.min.js"
data-site-id="your-agency-id"
data-greeting="Hi! I can answer questions about parks, recreation programs, and facility rentals."
async>
</script>
Accessibility Considerations
Granicus emphasizes accessibility compliance. The CityDesk.AI chatbot includes:
Keyboard navigation support
Screen reader compatibility
ARIA labels on interactive elements
Sufficient color contrast (customizable)
Resizable text support
No additional configuration is required for basic accessibility, but you can adjust colors to meet your agency's specific contrast requirements.
Troubleshooting Granicus Integrations
Script Not Loading
Symptoms: Chatbot icon doesn't appear; no errors in console
Check:
Verify the script URL is correct and not blocked by content security policy
Confirm the script is in the footer section, not header
Check if Granicus's CDN is caching an older version of the page
Solution: Clear Granicus cache if available, or wait for CDN refresh (typically 15-60 minutes).
Chatbot Loads But Doesn't Have Correct Information
Symptoms: Chatbot responds but gives generic or incorrect answers
Check:
Verify the
data-site-idmatches your CityDesk.AI accountConfirm your website has been crawled recently in the CityDesk.AI dashboard
Check if the content you expect is actually on crawlable pages (not in PDFs only or behind logins)
Solution: Request a re-crawl in your CityDesk.AI dashboard and verify key content is on HTML pages.
Conflict with Other Granicus Widgets
Symptoms: Chatbot appears but interferes with chat features, accessibility widgets, or other overlays
Check:
Identify which widget is conflicting
Note the z-index and position of both elements
Solution: Adjust chatbot position:
data-position="bottom-left"
data-offset-bottom="20"
Or increase delay before chatbot loads:
<script>
window.addEventListener('load', function() {
setTimeout(function() {
var s = document.createElement('script');
s.src = 'https://cdn.citydesk.ai/widget/v2/chatbot.min.js';
s.dataset.siteId = 'your-agency-id';
document.body.appendChild(s);
}, 2000);
});
</script>
Common Questions for Government Agencies on Granicus
Based on Granicus implementations, these are the most frequent citizen inquiries:
Meetings & Governance
Meeting schedules and agendas
How to submit public comment
Where to find meeting recordings
Council/board member contact information
Services & Permits
Business license requirements
Building permit process
Utility service signup and billing
Public records requests
General Information
Office hours and holiday closures
Department phone numbers
Location and parking information
Job openings and applications
The chatbot learns these from your existing content. Review your Granicus site to ensure this information is current and easily accessible.
Measuring Impact
Metrics to Track
Chatbot Dashboard:
Total conversations per week
Most common questions asked
Questions the chatbot couldn't answer (content gaps)
Time of day usage patterns
Compare with Existing Channels:
Phone call volume before/after implementation
Email inquiry volume
govDelivery click-through rates (are people finding answers before needing to subscribe?)
Success Indicators
Short-term (1-4 weeks):
Chatbot handling 50+ conversations per week indicates adoption
Staff reports fewer calls on basic questions
Medium-term (1-3 months):
Measurable decrease in routine inquiry volume
Identification of content gaps through unanswered questions
Positive citizen feedback in surveys or comments
Long-term (3+ months):
Quantifiable staff time savings
Improved citizen satisfaction scores
Expanded chatbot capabilities based on learned patterns
Next Steps After Integration
Inform staff: Let departments know the chatbot is live so they can direct citizens to it and report any issues
Monitor the first two weeks closely: Review unanswered questions daily to catch content gaps early
Update your website: If the chatbot frequently fails on certain topics, add or improve that content on your Granicus site
Consider expansion: Once the basic chatbot is working well, explore connecting additional data sources like permit status or service request tracking
Coordinate with govDelivery: Create a segment to notify citizens about the new chatbot feature
Need help integrating CityDesk.AI with your Granicus website? Contact our team for personalized implementation support.