- Brand
- Allo
- Category
- Sales & CRM
- Primary Subcategory
- AI Voice Agents & Contact Center
Integration details
Description
Connect Allo's AI phone system to ChatGPT. Search and manage conversations, SMS, contacts, notes, tags, team comments, analytics, dialing queues, call routing, summary templates, AI agents, and calendars using the permissions of your connected Allo account.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Voice Agents & Contact Center
- Secondary Subcategories
- None listed
- Brand
- Allo
- Access
- Account required
- First tracked
- 2026-10-10
- Tool count
- 77
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Allo
Get updates when Allo’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Voice Agents & Contact Center
View Category77 tools agents can invoke
Give the AI receptionist a website to answer callers from. Allo queues a crawl of the site starting at this URL and stores it as one knowledge source in the team's knowledge library, so this is how a business's existing menu, price list, FAQ or opening-hours pages become something the receptionist can answer with — better than retyping any of it into knowledge_text. The call returns right away; the content becomes searchable once indexing finishes, and a crawl that fails (a login wall, a paywall) is not reported back here, so if the receptionist still cannot answer later, put the facts into allo_update_agent's knowledge_text instead. A URL this line already has is rejected; one another line of the team already added is linked rather than crawled again. Read the current ones under knowledge.websites in allo_get_agent. Uploading a document is still Allo-app-only.
allo_add_agent_knowledge_website
Add one or more tags to a call. Pass tag keys (not display names) — use allo_list_tags to find keys. Returns 409 TAG_ALREADY_EXISTS if already applied.
allo_add_call_tags
Add a comment to an existing thread. To @-mention a teammate, embed @[Name](usr-xxx) in the content — get user ids from allo_list_users. @[all](all) notifies the whole team. Mentioned teammates receive push/email notifications.
allo_add_thread_comment
Append one or more phone numbers to the current user's dialing queue (power dialer). Creates the queue if it doesn't exist yet. Optional contact metadata (name, company, etc.) is used to enrich CRM records. Pass `user_id` or `email` to target another team member's queue (assignee must be on the same team — otherwise ASSIGNEE_NOT_FOUND). Returns { added, skipped } — skipped items include a reason (INVALID_PHONE_NUMBER, INVALID_CONTACT_DATA). Server-side limits: 1000 numbers per queue (returns DIALING_QUEUE_LIMIT_REACHED if exceeded); duplicates rejected with DIALING_QUEUE_APPEND_CONFLICT.
allo_add_to_dialing_queue
Fetch up to 100 conversation items in a single request. PREFER THIS over allo_get_conversation_item when you need multiple items — it is faster and uses fewer API calls. Supports extend=transcript to include call transcripts. Items not found are silently omitted.
allo_batch_get_conversation_items
Search or get CRM records (people, companies, deals). Pass an 'id' to get a single record, or omit it to search/list. Supports full-text search, structured filters, sorting, and pagination.
allo_crm_search
Create a CRM company. Search first with allo_crm_search (entity 'companies') so you do not create a duplicate. Returns the company with its id; pass that id as company_id to allo_create_contact or allo_update_contact to link people to it. Requires the CRM_WRITE scope.
allo_create_company
Add a custom field to CRM companies. A DROPDOWN field needs its choices in `options`; other types take none. `prompt` is the instruction Allo's AI uses to fill the field automatically, on every later call, so only set one the user wrote or approved. The key is built from the label. If a field with that key and the same type exists, it is returned with already_existed: true and nothing is created; with another type, it is refused. Each type has a limited number of fields per team. Requires the CRM_WRITE scope.
allo_create_company_field
Add a custom field to CRM contacts (people). No tool here can fill its values: they are set in the Allo app or by Allo's AI. The key is built from the label. If a field with that key and the same type exists, it is returned with already_existed: true and nothing is created; with another type, it is refused. Requires the CRM_WRITE scope.
allo_create_contact_field
Create a note on a person's CRM profile. To @-mention a teammate, embed @[Name](usr-xxx) in the content — get user ids from allo_list_users. @[all](all) notifies the whole team. Mentioned teammates receive push/email notifications.
allo_create_contact_note
Create an internal team note on a conversation (visible to the team only, never sent to the contact). To @-mention a teammate, embed @[Name](usr-xxx) in the content — get user ids from allo_list_users. @[all](all) notifies the whole team. Mentioned teammates receive push/email notifications.
allo_create_conversation_note
Create a new, empty, named dialing queue (power dialer queue). The new queue becomes the user's current queue; their other queues are kept. A user can hold at most 50 queues (DIALING_QUEUE_COUNT_LIMIT_REACHED). New queues skip numbers already waiting in them (prevent_duplicate_numbers is on). Pass `user_id` or `email` to create it for a teammate. Requires the DIALING_QUEUE_READ_WRITE scope. Then fill it with allo_add_to_dialing_queue.
allo_create_dialing_queue
Create a personal inbox: a saved view in the Allo app over one or more lines, optionally narrowed to phone-menu choices and filters. Build it from allo_get_inbox_suggestions when one fits (pass each suggestion's `source` as is). Menu conditions only work on lines where allo_list_menu_options is non-empty; elsewhere use a whole-line source (conditions: []). One source per line: combine several menu options on a line by concatenating their `branches` into one MENU_BRANCH condition. Name is required: a suggestion's name can be null (always for a whole-line suggestion), so name it after the line (allo_list_numbers) or ask the user. Pass user_id to create it for a teammate (admin or manager only; every line must be accessible to the teammate and in a workspace the user manages). Errors: INBOX_NAME_REQUIRED for a blank name; INVALID_INBOX_SOURCE for a malformed or conflicting source, or a menu node_id/digit that is not in the line's published menu; INVALID_INBOX_FILTERS; ALLO_NUMBER_FORBIDDEN for a line the owner can't access (or, for a teammate, outside the workspaces the user manages); INBOX_LIMIT_REACHED at 50 inboxes per user; API_KEY_INSUFFICIENT_SCOPE when the key or connector lacks INBOXES_WRITE (reconnect it to grant the scope). Requires the INBOXES_WRITE scope.
allo_create_inbox
Create a call summary template for the team. The template controls how AI-generated call summaries are structured. Provide a name, optional call context (background that helps the AI), an optional icon (emoji), and up to 10 ordered sections.
allo_create_summary_template
Create a call tag for the team. The tag's id (key) is built from its name and is what allo_add_call_tags takes. A name that matches an existing tag is refused with TAG_ALREADY_EXISTS, and call outcome names are reserved. Only team owners and admins can manage tags (FORBIDDEN otherwise). Requires the TAGS_WRITE scope.
allo_create_tag
Start a discussion thread on a call, SMS, or conversation note, with a first comment. Each item can have only one thread — a 409 THREAD_ALREADY_EXISTS means one exists; find it with allo_find_thread and comment instead. To @-mention a teammate, embed @[Name](usr-xxx) in the content — get user ids from allo_list_users. @[all](all) notifies the whole team. Mentioned teammates receive push/email notifications.
allo_create_thread
Permanently remove one knowledge source — a website or an uploaded document — from the team's knowledge library, which takes it away from every line of the team, not only this one. What was read from it is deleted with it, so a website has to be crawled again from scratch to come back and a document can only be restored by uploading it again in the Allo app. Only works through a line that uses the source. Confirm with the user before calling this; to take a website out of use for this line only, disable it with allo_set_agent_knowledge_website_status instead. Get the id from knowledge.websites or knowledge.files in allo_get_agent.
allo_delete_agent_knowledge
Delete a note from a person's CRM profile. Only the note's author can delete it.
allo_delete_contact_note
Delete a conversation note. Only the note's author can delete it (403 NOT_NOTE_AUTHOR otherwise).
allo_delete_conversation_note
Delete a dialing queue and every number in it. Targets the current queue unless `queue_id` is given; after deleting the current queue, the user's next most recent queue becomes current. This cannot be undone, so confirm with the user first. To keep the queue and only drop the numbers not yet called, use allo_remove_from_dialing_queue with unassigned: true. Only works on the user's own queues, never a teammate's, so untrusted text cannot clear someone else's work. Requires the DIALING_QUEUE_READ_WRITE scope.
allo_delete_dialing_queue
Delete a personal inbox. Only the saved view goes: no conversation, call or message is deleted. It cannot be undone, so only call it when the user explicitly asked to delete that inbox, and confirm which one first. Pass user_id to delete a teammate's inbox (admin or manager only); if that inbox also has lines in workspaces the user doesn't manage, the API answers FORBIDDEN: tell the user to ask the teammate to delete it. Requires the INBOXES_WRITE scope.
allo_delete_inbox
Delete a call summary template by its id. This is a soft delete: the template is deactivated and no longer used for new summaries. Returns nothing on success.
allo_delete_summary_template
Delete a call tag from the team. It is removed from the tag list for everyone, and cannot be undone, so confirm with the user first. Tags synced from a CRM cannot be deleted here (CRM_SYNCED_TAG_READONLY). Only team owners and admins can manage tags. To take a tag off one call, use allo_remove_call_tag instead. Requires the TAGS_WRITE scope.
allo_delete_tag
Find the thread attached to a conversation item (each item has at most one thread). entity_id is the item's id: cll- for calls, msg- for SMS, not- for conversation notes. Returns an empty list when the item has no thread yet.
allo_find_thread
Read the whole AI receptionist configuration of an Allo phone line in one call: business details, voice and language, prompt sections, capabilities, business hours, transfer rules, connected scheduling calendars and knowledge sources. Call this before allo_update_agent — that tool replaces whole collections, so you need the current state to avoid dropping configuration you did not mean to touch.
allo_get_agent
Get one connected calendar and the event types its provider currently offers — the catalog to pick from when filling allo_update_agent's scheduling.calendars. available_event_types is read live from the provider; it is null for a provider that has no event-type concept, which is not the same as an empty list. Each entry's required_questions are answers the provider rejects a booking without, so the receptionist collects them during the call; they are read-only and snapshotted when you select the event type.
allo_get_calendar
Get the call flow (inbound call routing) configured for an Allo phone number. Returns the published flow by default, or the working draft with status='draft'. The response includes `lock_version` (pass it back when saving a draft), `status` (DRAFT | PUBLISHED | SYNTHESIZED), and `definition` — the routing tree (camelCase keys, rooted at `entry_node_id`). A SYNTHESIZED status means the number has no saved flow yet and this is an in-memory view of its legacy IVR. Requires the PHONE_NUMBERS_READ scope. Use allo_list_numbers to find numbers.
allo_get_call_flow
Get full details of a single call or SMS. Call IDs start with cll-, message IDs with msg-. Use extend=transcript to include the full call transcript.
allo_get_conversation_item
Get a single conversation note by its id.
allo_get_conversation_note
Get one dialing queue (power dialer queue) and its numbers. Returns the queue settings under `queue` (name, voicemail_handling, do_not_disturb, prevent_duplicate_numbers) and one page of numbers, each with its position, call state (call_id, routing_result, sync_status, voicemail_left) and timestamps. Results are paginated: read `pagination.has_more` and ask for the next page to see more than the first 20 numbers. Targets the current queue unless `queue_id` is given. Returns 404 DIALING_QUEUE_NOT_FOUND if the user has no queue yet; allo_add_to_dialing_queue creates one. Requires the DIALING_QUEUE_READ_WRITE scope.
allo_get_dialing_queue
Get one power dialer session: a run of calls the user made through a dialing queue. Returns its name, owner, the line it called from, start and end times and duration in seconds. Requires the DIALING_QUEUE_READ_WRITE scope. Returns 404 DIALING_SESSION_NOT_FOUND for an unknown id.
allo_get_dialing_session
Get ready-made inbox suggestions for the user's lines, e.g. one per phone-menu option ("Sales", "Support"). Each entry is {allo_number, name, description, branch (the menu path, or null for a whole line), answered, rung, texted (recent activity), score, source: {allo_number, conditions}}. Pass `source` straight into allo_create_inbox `sources`. `name` and `description` are always null for a whole-line suggestion and can be null for a branch with no label; allo_create_inbox needs a name, so name it after the line (allo_list_numbers) or ask the user. To put several suggestions for the same line into one inbox, send one source for that line whose single MENU_BRANCH condition concatenates their `branches`; two sources for the same line, or two conditions on the same menu node, are rejected with INVALID_INBOX_SOURCE. If the user picks both a whole-line suggestion (branch null) and a branch suggestion for the same line, keep only the whole line: it already includes the branch. Suggestions are computed from the user's own lines, so when creating for a teammate (user_id) keep only lines that teammate can access and that sit in a workspace the user manages (allo_list_numbers shows who is on each line); otherwise the create fails with ALLO_NUMBER_FORBIDDEN. Start here whenever the user wants to set up inboxes; only reach for allo_list_menu_options when they want a branch no suggestion covers. Requires the INBOXES_READ scope.
allo_get_inbox_suggestions
Returns your API key's scopes, available endpoints, team info, and rate limits. Call this first to discover what you can do.
allo_get_me
Get a single call summary template by its id. Returns the template's name, icon, call_context, and ordered sections.
allo_get_summary_template
Get a discussion thread by id, including all its comments. Threads are team discussions attached to a call, SMS, or conversation note.
allo_get_thread
Get one team member by id: name, email and role. Requires the USERS_READ scope. Use allo_list_users to find ids.
allo_get_user
List the calendars connected to the workspace that you can see, whether or not any AI receptionist books on them. Returns each calendar's id, name, provider, status, whether it is the team default, and its owner. The id is what allo_update_agent's scheduling.calendars map is keyed by. Connecting a new calendar is an OAuth flow that only the Allo app can do — this lists what is already connected.
allo_list_calendars
List the custom fields defined for CRM companies, each with its key, label, type, dropdown options, visibility and AI fill prompt. Requires the CRM_READ scope.
allo_list_company_fields
List the custom fields defined for CRM contacts (people), each with its key, label and type. Requires the CRM_READ scope.
allo_list_contact_fields
List the notes on a person's CRM profile. person_id is the id returned by allo_crm_search for people (starts with per-).
allo_list_contact_notes
List the internal team notes on a conversation (notes are private to the team, never sent to the contact). contact_number is the contact's phone number, allo_number is the Allo line/inbox.
allo_list_conversation_notes
List conversations grouped by contact number, sorted by most recent activity. Pass exactly one of allo_number (one Allo phone line, from allo_list_numbers) or inbox_id (one of the user's personal inboxes, from allo_list_inboxes). When the user names an inbox ("my Sales inbox"), use inbox_id: it returns what that inbox shows in the app, applying its sources, menu-option conditions and saved filters (types, user_ids, contact_ids, contact_list_ids, tag_keys, tag_match) but not the app's Needs action / Mine tabs; pass unread=true yourself to see only unread conversations. An inbox can span several lines, so each row carries its own allo_number: use that row's allo_number when pinning (allo_pin_conversation) or replying (allo_send_sms from). Each row also carries `pinned`. Use pinned=true to list pinned conversations only, last_activity_since for incremental sync, unread=true for unread conversations. 400 FEATURE_NOT_SUPPORTED (its `param` names what) means the request uses something the API can't list yet, e.g. a feature of that inbox or `pinned` on a line; with inbox_id, 400 CONTACT_FILTER_NOT_SUPPORTED means its saved contact filters use the old contact model (open it in the app instead), and 422 CONTACT_FILTER_TOO_LARGE means its contact filters are too big to apply: tell the user rather than retrying. With inbox_id, INBOX_NOT_FOUND with retryable: true right after creating the inbox is replica lag: retry once. Requires the CONVERSATIONS_READ scope.
allo_list_conversations
List the user's dialing queues (power dialer queues), newest first: the queues assigned to them and the ones they created for teammates. Each item gives the queue's id, name, description, settings, assignee_id, total_numbers and remaining_numbers (not yet called). The user's current queue is the newest one assigned to them. Pass `user_id` or `email` to list a teammate's queues. Requires the DIALING_QUEUE_READ_WRITE scope. Use allo_get_dialing_queue to read the numbers in one queue.
allo_list_dialing_queues
List the user's personal inboxes (saved conversation views in the Allo app): id, name, emoji, sources (lines, each optionally narrowed by phone-menu choices), filters, notifications_muted and favorited_at (when the user starred it, null when not a favorite; favorites show first in the app, oldest star first). Call this when the user names an inbox ("my Sales inbox") and pass its id as inbox_id to allo_list_conversations. Pass user_id to list a teammate's inboxes (admin or manager only). API_KEY_INSUFFICIENT_SCOPE means the key or connector predates inboxes: the user must reconnect it to grant INBOXES_READ. Requires the INBOXES_READ scope.
allo_list_inboxes
List every option of a line's phone menu (IVR), flattened from its published call flow. Each entry is {node_id, path: [{node_id, digit}] (the steps from the first menu), digits (e.g. "1>2"), label, condition}, where `condition` is a ready MENU_BRANCH condition for that option. 403 ALLO_NUMBER_FORBIDDEN means the user can't access that line. An empty list means the line has no phone menu, or is not routed by a published call flow (call-flow engine): tell the user to publish a flow with a menu in the Allo app first, and offer a whole-line inbox meanwhile. Use it only for a custom inbox that allo_get_inbox_suggestions does not offer: put `condition` in the source's `conditions`. To combine several options on one line, concatenate their `branches` into ONE MENU_BRANCH condition rather than sending several conditions; two MENU_OPTION conditions on the same node, a node in both a MENU_OPTION and a MENU_BRANCH, or a node_id/digit not in the line's published menu, is rejected with INVALID_INBOX_SOURCE. Requires the INBOXES_READ scope.
allo_list_menu_options
List all Allo phone numbers and sender IDs with their capabilities (VOICE, SMS, MMS), country, and assigned team members.
allo_list_numbers
List the team's call summary templates. A summary template defines how AI-generated call summaries are structured (name, call context, and ordered sections). Returns each template's id, name, icon, call_context, and sections.
allo_list_summary_templates
List all tags configured on the team. Returns tag keys, display names, and colors. Use tag keys when adding tags or filtering searches.
allo_list_tags
List all team members with their roles and status. Use the user ID from results to filter conversations by user_id in search. Use allo_list_numbers to see phone number assignments.
allo_list_users
List the voices an AI receptionist can speak with — the same catalog the Allo app offers. Each voice's id is what allo_update_agent's voice_id takes, and a voice speaks the language it is listed under, so pick one matching the receptionist's language. demo_url is an audio sample you can offer the user to listen to before choosing.
allo_list_voices
Allo ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Allo'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 Allo alternatives on ChatGPT?
As of 2026-11-02, Allo competes with Aira, Aiva, Autocalls AI, Autodial, Bevado, Big Receptionist Agent, Bland, Call Me and 21 more in ChatGPT AI Voice Agents & Contact Center, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.