- Brand
- Badger Maps
- Category
- Sales & CRM
- Primary Subcategory
- B2B Sales CRM Platforms
Integration details
Description
Badger Maps is a field sales platform. Badger Maps gives field sales teams tools to work with customer accounts, routes, check-ins, and follow-ups. Use the features that fit your workflow to manage customer information and field activity. Route Planning: Work with routes and accounts Find accounts in an area, review account details, and view or manage routes in Badger Maps. Follow-Ups: Review follow-up details View future and overdue follow-ups and update customer account records in Badger Maps. Field Visits: Record customer check-ins Create and update check-ins associated with customer visits. Field sales involves route planning, account management, and follow-up activity. Use Badger Maps to view and manage these details in one place. Badger Maps provides tools for field sales teams.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- B2B Sales CRM Platforms
- Secondary Subcategories
- None listed
- Brand
- Badger Maps
- Access
- Account required
- First tracked
- 2026-10-27
- Tool count
- 23
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Agent DiscoverabilityChatGPT Discoverability ScoreUpdated dailyThe first to track the ChatGPT, Claude, Muse & Grok ecosystems, with the largest database on the core platforms. Tracked daily since .
0/100
Invisible#10of 68
in B2B Sales CRM Platforms- Picked
- 0.0/100
- Found
- 0.0/100
- Positioned
- –/100
Category leaderboard
B2B Sales CRM Platforms
- 1H
HubSpot73
- 2A
Attio39
- 3C
Close31
- 4Z
Zoho CRM10
- 10B
Badger Maps (Standard)0
Get alerts for Badger Maps (Standard)
Get updates when Badger Maps (Standard)’s Discoverability Score or category rank changes.
Competing in ChatGPT B2B Sales CRM Platforms
View Category23 tools agents can invoke
Create a new account in Badger Maps. Args: name: Account name (maps to last_name in the API — use the full business or contact name here). address: Street address including city, state, and zip (e.g. "123 Main St, Chicago, IL 60601"). phone_number: Phone number (can be empty string). email: Email address (can be empty string). first_name: Optional first name if the account is a person. notes: Optional free-text notes about the account. lat: Latitude — supply with lng to skip geocoding. lng: Longitude — supply with lat to skip geocoding. custom_fields: Optional dict of custom field values keyed by their human-readable labels (e.g. {"Sales Stage": "Lead", "Priority": "High"}). Labels must match the user's configured field names exactly. account_owner_id: Badger user ID to assign this account to. Leave unset in almost all cases — the tool fetches the authenticated user's ID automatically. Only pass this when a manager is explicitly creating an account on behalf of a rep (use find_user() to get the rep's user ID). Do NOT pass an account ID, location ID, or any other ID here — it must be a Badger user ID. Returns: Created account dict with custom fields resolved to human-readable labels — same shape as get_account().
Log a new check-in (field visit) for an account. Two mutually exclusive modes — check get_user_profile() → checkin_form_fields (apptlog_fields) to know which applies: Standard mode (checkin_form_fields is empty or absent): Pass visit_type (required) and optionally comments. custom_fields is ignored. Custom field mode (checkin_form_fields is non-empty): visit_type and comments are NOT used — they are replaced entirely by custom fields. Pass custom_fields only. If checkin_form_fields[0].is_conditional_checkin is true, only include fields that are "active": root fields (isroot: true) plus any child fields referenced by the selected option's "childs" list, applied recursively. Args: account_id: The Badger account ID to log the check-in against. visit_type: Visit type (e.g. "Drop-in", "Meeting"). Standard mode only. comments: Visit notes. Standard mode only. custom_fields: Dict of custom field values keyed by field label. Custom field mode only. Required fields must be included. Example: {"Status": "In Progress", "Priority": "High"} Returns: Created check-in object.
Create a new route in Badger Maps. Waypoints are resolved automatically from account data by default. A waypoint does NOT require a Badger account — you can add an account-less "quick stop" pin with just an address/coordinates. See the two shapes below. Args: name: Route name (e.g. "Monday Chicago Route"). route_date: Date of the route in YYYY-MM-DD format. waypoints: Ordered list of stops. Each stop is one of two shapes: Account-linked stop: - account_id (required): Badger account ID — maps to customer_id. - location_id (optional): Account location ID. If omitted, fetched automatically from the account. - name, address, city, state, zipcode, lat, lng (optional): Auto-fetched from the account if omitted. Quick stop (no linked account — a plain pin on the map): - account_id: omit entirely. - address (required): Free-form address string. - lat, lng (required): Coordinates. Not auto-geocoded — you must supply them (e.g. from a prior search/geocode). - name (optional): Display name for the stop. - city, state, zipcode, suite (optional): Address fields. Common to both shapes: - layover_minutes (optional): Planned time at this stop. Default 30. - appt_time (optional): Scheduled appointment time string. - suite (optional): Suite or unit number. start_time: Route start time (e.g. "09:00 AM"). Default "09:00 AM". start_address: Optional starting address before the first stop. (Not currently applied to the route.) destination_address: Optional ending address after the last stop. (Not currently applied to the route.) optimize: If True, optimize the stop order via Badger's routing engine before saving. The route is saved with the optimized order. created_by_id: Badger User ID to assign this route to. Leave unset in almost all cases — defaults to the authenticated user. Managers use this to create a route on behalf of a subordinate rep. To get the rep's User ID by name, call get_user_profile() and look up the rep in the "rn" field's values list. Returns: Created route object — normally the same fully-populated shape as get_route() (id, name, statistics, drawing_information, and waypoints with their real waypoint IDs). The create/save API calls themselves don't return this richer shape, so this re-fetches via sidekick afterward — expect a couple extra seconds of latency. The re-fetch is best-effort: if it fails, the route was still created and the raw create/save response is returned instead (do NOT retry the create).
Permanently delete an account from Badger Maps. WARNING: This action is irreversible. The account, its locations, and all associated check-in history will be deleted. Always confirm with the user before calling this tool. Args: account_id: The Badger account ID to delete. Returns: Confirmation string.
Search for a Badger user by email address or Badger user ID. WARNING: This tool CANNOT search by name — it only accepts an exact email address or numeric user ID. If you have a rep's name but not their email or ID, do NOT call this tool. Instead call get_user_profile() and look up the rep in the 'rn' entry of custom_fields, which contains {value: <user_id>, text: <rep_name>} for every subordinate. Args: query: Exact email address or numeric Badger user ID. Returns: User object with id, username, first_name, email.
Retrieve full details for a single account, with custom field labels resolved. Args: account_id: The Badger account ID. Returns: Account dict with standard fields (name, email, phone, address, notes, crm_id) plus all populated custom fields using their human-readable labels (e.g. "Sales Stage", "Priority", "Days Since Last Visit").
Generate a pre-visit brief for an account. Fetches full account details and recent check-in history in parallel, then formats them into a concise brief suitable for reading before a field visit. Args: account_id: The Badger account ID. Returns: Formatted plain-text brief with account info, custom field values, and up to the 5 most recent check-ins.
Retrieve full account details by external (CRM) ID. Use this when you have a CRM record ID (e.g. Salesforce or HubSpot ID) and need to look up the corresponding Badger account. Args: external_id: The external / CRM ID stored on the account (customer_id field). Returns: Account dict with standard fields plus all populated custom fields using their human-readable labels — same shape as get_account().
Find accounts within a geographic area, with optional filters on recency and custom fields. The AI client should generate a rectangular bounding box around the area of interest as a list of 4–5 lat/lng vertices (close the polygon by repeating the first point). Args: vertices: Polygon boundary as a list of {"lat": float, "lng": float} dicts. Use a simple rectangle: SW corner → NW → NE → SE → SW again. Example for a box around Chicago: [{"lat":41.7,"lng":-87.9},{"lat":42.1,"lng":-87.9}, {"lat":42.1,"lng":-87.5},{"lat":41.7,"lng":-87.5}, {"lat":41.7,"lng":-87.9}] min_days_since_checkin: Only include accounts last visited at least this many days ago (e.g. 30 = "haven't visited in 30+ days"). max_days_since_checkin: Only include accounts last visited within this many days. min_days_until_followup: Only include accounts whose follow-up is at least this many days away. Use a negative number to mean "already overdue by N days". max_days_until_followup: Only include accounts whose follow-up is within this many days (or already overdue). Use 0 for "due today or overdue". custom_text_filters: Filter by custom text field values, keyed by the field's human-readable label. Values can be a single string or a list of strings (matched with OR logic). Example: {"Sales Stage": ["Cold", "Warm"], "Specialty": "Cardiology"} custom_numeric_min: Minimum values for custom numeric fields, keyed by label. Example: {"Revenue": 10000} custom_numeric_max: Maximum values for custom numeric fields, keyed by label. Example: {"Revenue": 50000} rep_user_id: Scope results to a specific rep's accounts (manager use only). fields: Optional list of field names to include in each result. Standard field names (e.g. "id", "full_name", "follow_up_date", "days_since_last_checkin", "lat", "lng", "location_id") plus any custom field labels for this user (e.g. "Priority", "Sales Stage"). "id" is always included regardless. Omit to return all fields (default behaviour). max_results: Maximum number of accounts to return. Omit to return all matches. Returns: Flat list of account objects within the area matching all filters, truncated to max_results if specified. Each object contains the data needed for prioritization and route-building — do NOT follow up with get_account or get_account_brief calls just to get address or custom field values; they are already present in these results. Fields returned (when fields is None): - id: Badger account ID - full_name: account display name - original_address: street address string (if set) - location_id: Badger location ID - lat, lng: coordinates - last_checkin_date: date of last check-in (YYYY-MM-DD, may be null) - days_since_last_checkin: integer days since last visit (may be null) - follow_up_date: scheduled follow-up date (YYYY-MM-DD, may be null) - last_modified_date: date account was last modified (YYYY-MM-DD) - account_owner_id: Badger User ID of the account owner (integer, always present) - account_owner_name: full name of the account owner (string, always present but may be blank) - any non-null custom fields, keyed by their human-readable label (e.g. "Sales YTD", "Sales Stage") — no further fetching needed
Check how many of a route's linked accounts aren't already owned by a prospective new owner — call this before reassign_route() to warn the user about the accounts side effect described there. Args: route_id: The Badger route ID. new_owner_id: Badger User ID of the prospective new route owner. rep_user_id: Optional Badger User ID of the route's current owner. Defaults to the authenticated user. Returns: The number of linked accounts not already owned by new_owner_id.
Retrieve all check-ins (field visit logs) for an account. Args: account_id: The Badger account ID. Returns: List of check-in objects, each containing: - id: check-in ID - log_datetime: ISO timestamp of the visit - type: visit type for standard checkins (null for custom-field users) - comments: rep's notes for standard checkins (null for custom-field users) - created_by: rep's name - crm_id: CRM record ID if synced (may be null) - extra_fields: dict of custom field values for users with custom checkin fields configured; null for standard users
Retrieve a route with its full ordered list of stops. Args: route_id: The Badger route ID (from list_routes). rep_user_id: Optional Badger User ID of a subordinate rep. Only needed when a manager is fetching a rep's route. Returns: Route object containing: - id, name, route_date_time, created_by_id - start_waypoint, destination_waypoint - statistics: travel_time (driving minutes), meeting_time (minutes spent at stops), daily_total (travel_time + meeting_time, i.e. total minutes out on the route), total_distance (meters — divide by 1609.34 for miles) - waypoints: ordered list of stops, each with: - id: waypoint ID (pass as waypoint_id in update_route) - position: stop order (0-indexed) - customer_id: linked Badger account ID, or null for an account-less "quick stop" pin - waypoint_type: 1 for an account-linked stop, 3 for a quick stop - name: account name, or the quick stop's display name - location: {latitude, longitude} - location_id - address: {address, city, state, zipcode, complete_address} - layover_minutes, appointment_time, travel_time
Retrieve the authenticated user's profile. Returns key information including: - id, first_name, last_name, email - is_manager: whether this user can view managed reps' data - company: org name and ID - crm_type: connected CRM (e.g. "s" for Salesforce, "h" for HubSpot) - custom_fields: field definitions for all custom_text / custom_numeric fields on accounts, including a values list of valid picklist options ({value, text}) for each text field. The special "rn" field (present for managers only) lists each subordinate rep as {value: <user_id>, text: <name>} — use this to resolve a rep name to their Badger User ID. - apptlog_fields / acctlog_fields: custom form field definitions for check-ins and account logs Useful for understanding what custom fields are configured before querying accounts, and for resolving rep names to User IDs (managers only).
List all accounts for the authenticated user (or a managed rep). Args: rep_user_id: Optional Badger user ID of a rep whose accounts you want to view. Only works if the authenticated user is that rep's manager. Returns: List of {id, full_name} objects. Use get_account() to fetch full details for any account in this list.
List all accounts with a follow-up date scheduled in the future (not yet due). Use this when the user wants to plan ahead, review upcoming account visits, or build a route around scheduled follow-ups. Returns: List of account objects with an upcoming follow-up, each containing: - id: Badger account ID - first_name: account first name (may be null) - last_name: account last name / company name - follow_up_date: the scheduled follow-up date (ISO date string) - locations: location ID associated with the account
List all accounts with a follow-up date that has already passed (overdue). Use this when the user wants to see accounts that need attention, build a route around overdue follow-ups, or triage their backlog. Returns: List of account objects with a past-due follow-up, each containing: - id: Badger account ID - first_name: account first name (may be null) - last_name: account last name / company name - follow_up_date: the overdue follow-up date (ISO date string) - locations: location ID associated with the account
List routes for the authenticated user (or a managed rep). Args: date_filter: Optional date string (YYYY-MM-DD) to filter routes by. Pass today's date to find the current day's route. If omitted, all routes are returned. rep_user_id: Optional Badger User ID of a subordinate rep. Only works if the authenticated user is that rep's manager. Returns: List of {id, name, route_date, full_user_name} objects, sorted newest first. Use get_route() with an ID to see the full waypoints.
Reassign an existing route to a different Badger user — moves it into their saved routes list. This changes only the route's owner; its stops and waypoints are left untouched. Requires: the authenticated user must be a manager of both the route's current owner and new_owner_id, and must have the Badger 'can_reassign_routes' permission. Side effect — accounts: if the authenticated user also has the 'can_reassign_accounts' permission, any of the route's linked accounts not already owned by new_owner_id are automatically reassigned to new_owner_id too, as an unavoidable part of this same call (this mirrors the Badger app's own "Reassign Accounts?" confirmation dialog — there is no way to reassign only the route when both permissions are granted). Call get_accounts_to_reassign() first and tell the user how many accounts will also move before calling this. Args: route_id: The Badger route ID to reassign. new_owner_id: Badger User ID of the rep who should now own this route. rep_user_id: Optional Badger User ID of the route's current owner — needed when reassigning a route that isn't currently the authenticated user's own. Defaults to the authenticated user. Returns: {"route_id": ..., "reassigned_to": ...}
Full-text search for accounts by name, phone, or address. Useful for conversational lookups when the user provides a partial name, address, or phone number. Returns a lightweight list — use get_account() to fetch full details for any result. Args: query: Search string (partial name, phone number, or address fragment). Returns: List of matching account objects, each containing: - id: Badger account ID - name: account display name - original_address: formatted address string - locations: list of location objects with address, city, state, id, lat, and lng
Update fields on an existing account. Only the fields you pass will be changed — omitted fields are left as-is. At least one field must be provided. Args: account_id: The Badger account ID to update. name: New account name (maps to last_name). first_name: New first name. phone_number: New phone number. email: New email address. notes: New notes (replaces existing notes entirely). follow_up_date: Scheduled follow-up date in YYYY-MM-DD format. Pass an empty string "" to clear the follow-up date. custom_fields: Dict of custom field values to update, keyed by human-readable label (e.g. {"Sales Stage": "Customer"}). Only the fields included here are changed. account_owner_id: Reassign the account to this Badger user ID. Only works if the authenticated user is a manager. Returns: Updated account dict with custom fields resolved to human-readable labels — same shape as get_account().
Update the address of an existing account. Fetches the account's location ID automatically, then updates the address. Supply lat/lng to skip geocoding (faster and more accurate when coordinates are already known). Args: account_id: The Badger account ID whose address should be updated. address: New full address string (e.g. "456 Oak Ave, San Francisco, CA 94102"). lat: Latitude of the new address (optional, skips geocoding). lng: Longitude of the new address (optional, skips geocoding). Returns: Updated location object with id, address_line_1, city, state, zipcode, lat, and long.
Edit an existing check-in's fields. Two mutually exclusive modes — check get_user_profile() → checkin_form_fields (apptlog_fields) to know which applies: Standard mode (checkin_form_fields is empty or absent): Pass visit_type and/or comments. custom_fields is ignored. Omitted fields are preserved from the existing check-in. Custom field mode (checkin_form_fields is non-empty): Pass custom_fields only. visit_type and comments are not applicable. Only the fields you include are changed — other custom fields on the check-in are preserved. For conditional checkins, only pass active fields. Args: checkin_id: The ID of the check-in to update. visit_type: New visit type. Standard mode only. Omit to keep existing. comments: New notes. Standard mode only. Omit to keep existing. custom_fields: Custom field values to update, keyed by field label. Custom field mode only. Only passed fields are changed. Example: {"Status": "Completed", "Priority": "Low"} Returns: Updated check-in object.
Update an existing route — change its stops, rename it, and/or optimize it. Call get_route() first to see the current stops. Then pass the full updated waypoints list (existing stops with their waypoint_id preserved, plus any new stops). Omit waypoints to keep the existing stops unchanged. Args: route_id: The Badger route ID to update. waypoints: Full replacement list of stops. Each stop is either an account-linked stop (account_id or customer_id) or an account-less "quick stop" (address + lat/lng, no account_id) — see create_route's docstring for the full shape of each. Also: - waypoint_id or id (optional): The existing Badger waypoint ID from get_route() output. Include this to preserve the identity of existing stops (this includes existing quick stops — their customer_id will be null in get_route() output, which is expected and does not need an account_id added); omit for new stops being added. If omitted entirely, existing stops are kept as-is. name: Optional new name for the route. optimize: If True, optimize the stop order before saving. rep_user_id: Optional Badger User ID of a subordinate rep. Required when a manager is updating a route that was created for a rep (use find_user() to get the rep's user ID). Returns: Updated route object — normally the same shape as get_route(). The post-save re-fetch is best-effort: if it fails, the update was still saved and the raw save response is returned instead.
Badger Maps (Standard) ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Badger Maps (Standard)'s ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are Badger Maps (Standard) alternatives on ChatGPT?
As of 2026-10-28, Badger Maps (Standard) competes with HubSpot, Attio, Close, Zoho CRM, 33CRM, Agiled, Alaz, Asbie and 59 more in ChatGPT B2B Sales CRM Platforms, ranked by public Discoverability Score.
Where does Badger Maps (Standard) rank in B2B Sales CRM Platforms on ChatGPT?
As of 2026-10-28, Badger Maps (Standard) ranks #10 of 68 in ChatGPT B2B Sales CRM Platforms with a Discoverability Score of 0/100 (Invisible).
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.