Everything you need to know about CivicBot. Can't find your answer? Contact us.
🔍
🚀 Getting Started
CivicBot is an AI-powered 311 service request chatbot for cities and municipalities. It lets residents report issues like potholes, broken street lights, and graffiti 24/7 through a conversational chat widget embedded on your city website. Submissions are routed directly to your work order system (Cityworks or Trimble Unity) or delivered to staff via email — with zero manual work required.
Most cities are fully configured in under 30 minutes. The basic steps are: sign up, configure your SR types and branding, copy the embed code to your website, and go live. Cityworks integration takes a bit longer if you need to coordinate API credentials with your IT team.
No. Residents never create accounts or log in. They simply open the chat widget on your city website and start a conversation. Name, phone, and email are optional — residents can submit completely anonymously if they choose (unless your city has configured those fields as required).
CivicBot works on all modern browsers (Chrome, Firefox, Safari, Edge) and all devices — desktop, tablet, and mobile. The widget is fully responsive and requires no plugins or app downloads.
Go to your admin panel → Embed Code. You'll find a single <script> tag to copy and paste into your website's HTML — typically in the footer, just before the closing </body> tag. It works with WordPress, Drupal, Squarespace, and any other CMS. If your IT team manages the website, just send them the embed code — it's a one-minute change.
Yes — every new account gets a 30-day free trial at the Professional plan level. No credit card required. You get full access to all features during the trial. You can also Try the Live Demo right now without signing up.
Yes. CivicBot is fully mobile-optimized. The chat widget and standalone page work on all modern smartphones. The text input is sized to prevent auto-zoom on iOS Safari. Residents can use GPS to auto-fill their location and upload photos directly from their phone's camera.
💬 Widget & Submissions
Yes. Name, phone, and email are always asked but optional by default — residents can skip any or all fields and submit without providing contact information. Cities can configure individual fields — name, phone, email — as required or optional independently. All three are always shown to residents, but only the fields your city has marked required must be filled in to submit. This lets you require a phone number for follow-up while keeping email optional, for example.
Yes. Residents can upload a photo at the end of the submission flow. CivicBot's AI will analyze the photo and suggest the most likely service request type — residents can accept the suggestion or choose manually. Photos are attached to the Cityworks SR or included in the email notification to staff.
If your city has geofencing enabled, CivicBot will detect when an address is outside your city's boundaries and show a friendly warning message before submission. The resident can correct their address or is advised to contact another agency. Geofencing uses the U.S. Census Bureau's geographic data for accurate city boundary detection. You can customize the message shown to residents in your admin settings.
When a resident uploads a photo, CivicBot sends it to Anthropic's Claude AI, which analyzes the image and compares it against your configured service request types. It returns the top matches with confidence scores. For example, a photo of a cracked road would match "Pothole Report" with high confidence. The resident can accept the AI's suggestion or choose a different SR type manually. This speeds up the submission process and improves SR categorization accuracy.
Every resident receives a CB-YYYY-XXXXX CivicBot reference number — for both Cityworks and email cities. For Cityworks cities, the Cityworks SR number is stored alongside it so your staff can cross-reference, and the CivicBot reference is added to the top of the Cityworks comment. Residents can return to the chatbot any time and type their CB- number to check status. If your city has submitter confirmation emails enabled, the resident also receives an email with their confirmation number and submission details.
Yes. After you describe your issue, CivicBot's AI may ask one targeted clarifying question to help categorize your request accurately (e.g., "Is the pothole blocking traffic or on a residential street?"). You can answer with one of the provided options or skip past it. This helps staff prioritize and route the right crew.
Yes. After uploading a photo (or skipping it), you'll see an optional "Anything else to add?" step where you can provide additional context, notes, or details that don't fit elsewhere. This is optional — just press Enter to skip it if you have nothing to add.
The widget interface is currently in English. Multi-language support is on our roadmap. Contact us at info@centricitygis.com if this is a priority for your city.
🔗 Cityworks / Trimble Unity
A State Plane Zone (WKID) is a coordinate system code that tells CivicBot how to translate GPS coordinates into the correct map projection for your Cityworks instance. Without the correct WKID, service request locations will appear in the wrong place on the map.
To find your WKID:
Log into Cityworks and look at an existing SR with a map location
Check with your GIS department — they will know your city's State Plane zone
Common California zones: Central Valley = 26942, Northern = 26941
Go to your admin panel → SR Templates → click Sync from Cityworks. CivicBot will pull all templates marked "For Public Site" from your Cityworks instance. You can then select which templates to show in the widget and add plain-language aliases (e.g., "Pothole Report" instead of "STREET-POT-001") so residents can understand the options.
Common causes:
Base URL format: Should be the root URL of your Cityworks instance, e.g. https://cityworks.yourcity.gov/cityworks — no trailing slash
API user not set up: Cityworks requires a dedicated API user account with the correct permissions
Firewall: Your city's firewall may be blocking external API calls — your IT team may need to whitelist CivicBot's Azure IP range
Sandbox vs Production: Make sure you're using the correct URL for your environment
Yes. You need a dedicated Cityworks user account for CivicBot with permissions to: create service requests, add comments, and add attachments. We recommend naming the account something like CWAPI or CivicBot. Contact your Cityworks administrator or Trimble support to set this up. We recommend using a service account rather than a personal user account so access isn't tied to an individual employee.
CivicBot supports Trimble Unity Maintain (cloud-hosted) and recent versions of Cityworks AMS (on-premise). If you're unsure whether your version is compatible, contact us and we'll verify before you sign up.
CivicBot creates a full service request in Cityworks including: SR type (mapped to your template), location (geocoded address + X/Y coordinates in your State Plane projection), description, caller name/phone/email (if provided), and photo attachment (if uploaded). The SR appears in Cityworks exactly as if a staff member created it manually.
💳 Billing & Plans
At the end of your 30-day trial, your account is automatically paused — no charges occur. To continue using CivicBot, add a payment method and select a plan from the Billing page in your admin panel. Your configuration and submission history are preserved during the pause.
Yes. You can upgrade at any time. If you're on an annual plan, you'll be charged the prorated difference for the remainder of your term — so you only pay for the upgrade from today, not from the start of your year. The upgrade takes effect immediately.
Monthly plans can be downgraded at any time — changes take effect at your next billing date.
Annual plans cannot be downgraded until your renewal date. This is because you've pre-paid for the full year at the current tier. You'll receive a reminder before your renewal date with the option to downgrade for the next year.
Yes. All CivicBot accounts are provisioned as tax exempt by default, recognizing that our customers are municipalities and government agencies. No tax is calculated or charged on your subscription. Contact us if you need documentation for your records.
Email plans are for cities without a work order system. Service requests are delivered as formatted HTML emails to your designated staff inbox(es). CivicBot generates a CB-YYYY-XXXXX confirmation number.
Cityworks/Trimble plans include direct API integration with your work order system. SRs are created automatically in Cityworks with full location data, description, and photo attachment. Residents receive the actual Cityworks SR number. Cityworks plans are priced slightly higher to reflect the additional integration complexity.
You'll receive email warnings at 80% of your limit. If you reach 100%, the widget will temporarily stop accepting new submissions until the limit resets on the 1st of the next month. You can upgrade your plan at any time to increase your limit immediately. Submission limits reset monthly — they do not roll over.
⚙️ Admin Panel
Go to Settings → scroll to the Branding section → click Upload Logo. Your logo will appear in the chat widget header, the chat bubble, and the admin panel header. Supported formats: PNG, JPG, SVG. Recommended size: at least 200×200px, square or horizontal logo works best.
Go to Submissions → use the date filters and search to narrow down the records you want → click Export CSV. The export includes confirmation number, SR type, address, submitter info, delivery method, date, completion status, and any internal notes you've added.
Geofencing prevents residents from submitting service requests for addresses outside your city limits. When enabled, CivicBot checks the submitted address against U.S. Census Bureau geographic boundaries and blocks out-of-jurisdiction submissions with a customizable message.
We recommend enabling it if your city frequently receives misdirected requests. To enable: go to Settings → enable Geofencing → click Verify City Location to anchor your city's boundary. The verify step is required for geofencing to work.
Yes. In Settings → Notification Emails, you can enter multiple email addresses separated by commas. All listed addresses will receive the SR notification email for every submission.
Yes. Go to Settings and enable Send Submitter Confirmation Email. When enabled, residents who provide an email address will automatically receive a confirmation email with their SR type, address, confirmation number, and submission details. This is enabled by default for new accounts.
In the Submissions log, each row has a Done checkbox and a Notes field. Click the checkbox to mark it complete (for tracking purposes — this does not update Cityworks). Click in the Notes field to add internal comments visible only to admin staff. Both save automatically.
Yes. Each row in the Submissions list has a 🗑 trash icon on the right. Click it and confirm the prompt to remove the submission from your CivicBot list. This is a soft delete — the record is hidden from your view but retained in the system for audit purposes. Important: deleting a submission from CivicBot does not delete any Service Request already sent to your CMMS — you manage those directly in Cityworks as normal.
Yes, for clearly out-of-jurisdiction addresses. CivicBot uses U.S. Census incorporated-place boundaries. When an address geocodes cleanly to a different city, CivicBot rejects it immediately with your customizable "outside city limits" message. For ambiguous addresses (park names, landmarks that don't map to a specific incorporated place), CivicBot attempts to resolve the landmark before allowing the submission through — ensuring residents with valid in-city addresses at landmarks can still submit.
Yes. Go to Settings → scroll to the Public Contact Info section. Enter your city's public phone number and/or website URL. Once saved, all resident-facing emails — submission confirmations, approval notices, and rejection notices — will include a "Questions? Contact [City] at [phone] · [website]" line above the email footer. Both fields are optional; fill in one or both.
Yes. On the SR Templates page, each template has a green + keywords button. Click it to enter comma-separated synonyms that should match this category — for example, adding garbage, trash, refuse, bin to your Solid Waste template means residents who type "my garbage wasn't picked up" will correctly be matched to that category even if the template name doesn't contain "garbage." Keywords are fed directly to the AI classifier and are separate from the display alias.
The Manage Billing & Payment button on the Billing page opens your Stripe customer portal — a secure page where you can add or update your payment method, view invoice history, and download receipts. This portal is hosted by Stripe and your payment information is never stored on CivicBot's servers.
Go to Admin → Review Queue. In the Contact Requirements section, you'll see three independent toggles: Name required, Phone required, Email required. All three fields are always shown to residents — the toggle controls whether they must fill it in or can skip it. This lets you require phone for follow-up but make email optional, for example.
🚨 Emergency Routing & Triage
Emergency Routing lets you flag specific service categories as emergencies — water main breaks, sewer overflows, downed lines, gas smell, etc. When a resident's message matches a flagged category, CivicBot stops the form flow entirely and shows a red call-out card with click-to-call buttons for your business-hours and after-hours phone numbers. No service request is created — the resident is routed straight to a human. This keeps form submissions for non-urgent issues only and ensures real emergencies reach a person immediately.
Go to your admin panel → Emergency Routing. Fill in your Business-Hours Phone and After-Hours Phone with labels (e.g. "Public Works," "Police Dispatch"), set your business-hours window and the days you're open, and your timezone. Then scroll down to the list of your selected service categories and toggle on the ones that should be emergencies. For each flagged category, write a short message you want residents to see (e.g. "Active sewer issues need immediate attention — please call us directly."). Changes save automatically.
CivicBot checks the current time in your city's timezone against your configured business-hours window. The number that's currently appropriate gets a "CALL NOW" badge and is visually emphasized — so residents see the right contact at a glance. After hours, weekends, and holidays-as-configured all point residents to your after-hours number.
Yes. The red call-out card has a small "I'd rather submit a form anyway" link at the bottom that bypasses the emergency routing and resumes the normal submission flow. We default to encouraging the call, but residents who insist on filing a form (or who are reporting after the fact rather than during an active emergency) can still do so.
Yes. By default all emergency categories use the city-wide business-hours and after-hours numbers. But each flagged category can have its own phone number override. For example, "Water Main Break" can dial your Water Department direct line while "Downed Power Line" routes to Public Works. To configure: in Emergency Routing, expand any toggled-on category and you'll see a Custom phone numbers for this category section with Business Hours and After Hours fields. Leave blank to fall back to the city-wide default.
The Review Queue is an optional triage workflow for cities that want staff to validate every submission before it hits Cityworks. When enabled, every submission is queued in CivicBot for staff approval. From the Review Queue page, your team can approve (which pushes the SR into Cityworks with the full payload), reject with a reason, or batch-approve multiple at once. The Pending Review intake mode is set per-city in Admin → Review Queue.
Direct to CMMS is the right choice for most cities — submissions create Cityworks SRs immediately, no staff intervention required. Faster for residents, less work for staff.
Pending Review is for cities that want a human gate on every submission — useful if you have concerns about duplicate or spurious requests, or if you want to standardize how SRs are described before they reach Cityworks. The trade-off is added staff workload and slower response time for residents.
Yes. In Admin → Review Queue there's a "Require name, email, and phone before submission" toggle. When enabled, the bot will not let residents submit anonymously — it re-prompts until all three are provided. Useful for cities that need to follow up on every submission and don't want orphaned anonymous reports.
In the Review Queue, each pending row has a checkbox on the left. Use the "Select all N pending" row to select everything visible, or click individual rows. Once at least one is selected, an action bar appears in the card header with an "Approve N → CMMS" button. You'll be asked to confirm before the bulk push. If any individual approval fails (e.g. Cityworks is offline), the others still process and you'll see a count of approved vs. failed.
Rejected submissions are marked with a red "Rejected in CB" badge in the Submissions log and automatically marked Done so they drop out of your "Not Done" view. You can write a reason when rejecting (e.g. "duplicate of #1234", "outside city limits") and that reason is shown in the log for future reference. If you've enabled rejection notifications, the resident also gets an email letting them know.
📧 Status, Notifications & Resident Lookup
There are three resident-facing emails, all individually togglable per city:
1. Submission confirmation — sent immediately when a resident submits, including their CivicBot reference number and a summary of their request. (Toggle: Settings → Send Submitter Confirmation.)
2. Approval notification — sent when staff approve a Pending Review submission, including both the CivicBot reference and the Cityworks SR number. Default: ON. (Toggle: Admin → Review Queue → "Email resident on approval.")
3. Rejection notification — sent when staff reject a submission, including the reason if provided. Default: OFF (opt-in if you want full transparency). (Toggle: Admin → Review Queue → "Email resident on rejection.")
Yes. Residents who saved their CB-2026-XXXXX confirmation number can return to the chatbot any time and simply type the number. The bot shows them a status card with the current state (Open, In Progress, Closed), the request type, and the date submitted. For Cityworks-backed cities, the status reflects the actual Cityworks SR state — auto-updated by CivicBot every 30 minutes. No login required for residents.
Yes — for Cityworks-backed cities. If your staff creates a Service Request after a phone call or walk-in, the resident can later type that SR number (e.g. 2654) into the chatbot to see its current status. CivicBot looks it up live from your Cityworks system and shows a status card with the same info as a CivicBot-originated lookup. Works with formats like 2654, #2654, status 2654, sr 2654. This feature is on by default for CMMS cities and can be toggled off per city if you'd rather not expose SR numbers to residents.
Go to Admin → Review Queue and toggle off "Let residents look up CMMS Service Request status by number". When off, residents who type a bare Service Request number get the regular AI classification flow instead of a status card. CivicBot-originated lookups (using CB-2026-XXXXX confirmation numbers) continue to work either way.
Every 30 minutes, CivicBot polls Cityworks for any submissions that haven't been closed or cancelled yet. Once an SR is closed in Cityworks, we stop polling it — so the load on your Cityworks instance is minimal and scales with the number of open requests, not all-time submissions.
In the Submissions log, the CivicBot reference number (CB-2026-XXXXX) appears with the Cityworks SR number (CMMS #2654) shown directly below it. The same pairing shows in the Review Queue row headers. The CivicBot reference is also added to the top of every Cityworks comment so your staff can search either way.
The CMMS Status column appears only for Cityworks-backed cities and shows the live Cityworks status for each submitted SR, color-coded:
• 🟢 Green — Closed or Complete • 🟠 Amber — In Progress or Assigned • 🔵 Blue — Open or Initiated • ⚪ Gray — Cancelled or Voided
The status reflects the raw label from your Cityworks configuration. A "last checked" timestamp below the badge tells you when CivicBot last polled Cityworks for that row.
Every message the resident sends is classified by intent first. Phrases like "What time does City Hall open?" or "When is bulk trash pickup?" are recognized as questions and routed to CivicBot Answers (if your city has the add-on). Phrases like "I have a pothole in front of my house" or "Sewage overflowing on Main St" are recognized as reports and start the service-request flow. The bot can pivot mid-conversation — answer a question, then start an SR — without making the resident restart, and carries over any location or details already mentioned.
😕 No results found. Try a different search term or ask us directly.
Still have questions?
Our team typically responds within one business day.