Documentation
cannedIQ User Guide
Everything you need to create powerful commands, automate repetitive typing, and let AI draft responses for you — on any webpage.
Overview
cannedIQ is a Chrome Extension that stores your text snippets, templates, and AI prompts and inserts them into any text field on any webpage — emails, support tickets, LinkedIn messages, GitHub comments, Slack, and more.
There are three core building blocks:
- Commands — a saved response, template, or AI prompt you can launch at any time.
- Stacks — folders that group related commands together.
- Variables — placeholders like {{today}} or {{firstName}} that make templates dynamic.
Quick Start
Getting your first command running takes about 60 seconds:
- Click the cannedIQ icon in your Chrome toolbar to open Options.
- Click + New Command in the Commands tab.
- Give it a name, write your template text, and save.
- Navigate to any webpage with a text field, click into it, and press Ctrl+Space (or ⌘+Space on Mac).
- Find your command, press Enter — done.
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
| Ctrl+Space | Open the command palette on any page |
| ↑ / ↓ | Navigate commands in the palette |
| Enter | Launch the selected command |
| Escape | Close the palette or cancel a variable prompt |
| /keyword + Tab | Inline slash trigger — expand command directly in a text field |
| /keyword + Space | Alternative inline slash expand |
Creating Commands
Open Options → Commands tab → click + New Command. Every command has these core fields:
| Field | Description |
|---|---|
| Name | Shown in the palette. Make it scannable — e.g. "Thank you — Order Delay". |
| Stack | The folder/category this command belongs to. |
| Slash Trigger | A short keyword (no spaces) you can type inline to expand this command, e.g. thanks. |
| Template | The text to insert. Supports {{variables}}. |
| Command Type | Static (plain text/template) or AI (prompt sent to GPT). |
| Conditions | Rules that limit when this command appears (site, URL, etc.). Pro |
| Actions | What happens after text is resolved — insert, copy, open URL, etc. |
| Favorite | Pins the command to the top of the palette with a ★. |
Static Templates
A static command inserts plain text, optionally with variable placeholders. It's instant — no network call, no delay.
Basic Example
When launched, cannedIQ prompts you to fill in firstName and agentName, then inserts the completed text at your cursor.
Multi-line & Formatted Text
Line breaks in your template are preserved exactly. Write the template the way you want it to appear in the output — what you see is what gets inserted.
AI Commands Pro + AI
AI commands send a prompt to GPT and insert the generated response. You write the instructions — cannedIQ handles the API call. No API key required.
Writing an AI Prompt
Think of the AI prompt as instructions to a writing assistant. Be specific about tone, length, and purpose. Use {{inputText}} to pass whatever you've already written or selected into the prompt.
With text already in the field, launch this command — it sends what you wrote to GPT and replaces it with the polished version.
Variables role, company, and goal are prompted when you launch — you fill them in and AI writes the message.
AI Prompt Best Practices
- State the output format — "reply in bullet points", "write one paragraph", "give me a subject line only".
- State the tone — "professional", "casual", "empathetic but firm".
- Use {{inputText}} to reference existing draft text or selected content.
- Add constraints — "under 50 words", "no exclamation marks", "avoid the phrase 'I hope this email finds you well'".
- Provide context about your role: "You are a customer support agent for a SaaS company".
Stacks
Stacks are folders for organizing commands. You might have stacks for "Support", "Sales", "HR Templates", or "Personal". In the command palette, stacks appear as section headers so you can navigate large libraries quickly.
Free accounts can have up to 3 stacks. Pro and Team plans are unlimited.
Each stack has a name, color, and icon. Team stacks synced from a team admin show a 🏢 icon and cannot be edited by members.
How Variables Work
Variables are placeholders written as {{variableName}} inside your template or AI prompt. When a command is launched, cannedIQ resolves each placeholder to its real value before inserting the text.
There are two types:
- Dynamic variables — resolved automatically from the current page context. No user input needed.
- Custom variables — you define them; a fill-in modal appears when the command is launched.
Dynamic Variables
These are resolved automatically — you just drop the placeholder in your template and it fills itself in.
| Variable | Resolves to | Example output |
|---|---|---|
| {{today}} | Current date (locale format) | 5/21/2026 |
| {{now}} | Current date & time | 5/21/2026, 2:34:00 PM |
| {{time}} | Current time only | 2:34:00 PM |
| {{pageTitle}} | Title of the current tab | Dashboard — Acme Corp |
| {{currentUrl}} | Full URL of the current page | https://github.com/acme/repo/issues/42 |
| {{hostname}} | Domain name only | github.com |
| {{siteName}} | Friendly site name (if recognized) | GitHub, Gmail, LinkedIn… |
| {{selectedText}} | Text you have highlighted on the page | whatever you selected |
| {{activeInput}} | Current content of the focused text field | what's already typed |
| {{inputText}} | Active field content, or selected text if field is empty. Best for AI prompts. | draft or selection |
| {{clipboard}} | Your clipboard contents (requires clipboard setting enabled) | last copied text |
Usage Examples
Custom Variables
Any {{placeholder}} that isn't a built-in dynamic variable becomes a custom variable. When the command launches, a modal appears asking you to fill in each one.
Defining Custom Variables
In the command editor, scroll to the Variables section. For each custom variable you want to configure, add an entry with:
| Field | Description |
|---|---|
| Key | Must match the placeholder exactly (case-sensitive). E.g. firstName for {{firstName}}. |
| Label | Human-readable prompt shown in the fill-in modal. E.g. "Customer's first name". |
| Type | text, textarea, date, or dropdown. |
| Options | For dropdown type — comma-separated list of choices. |
| Required | If checked, the command won't fire until this field is filled in. |
Variable Types
Template using it:
Template using it:
How Triggers Work
There are two ways to fire a command:
- Palette — open with Ctrl+Space, search, and hit Enter. Works everywhere.
- Slash trigger — type a shortcode directly in a text field; cannedIQ detects it and offers to expand. Great for muscle memory.
Slash Text Triggers
A slash trigger lets you type a short code inside any text field to expand a command without opening the palette. Set it in the Slash Trigger field when creating a command.
How to Use
- Click into any text field on a webpage.
- Type /yourkeyword.
- Press Tab or Space — the keyword disappears and the command fires.
Slash Trigger Examples
| Slash keyword | Command name | What it inserts |
|---|---|---|
| /ty | Thank You — Quick | Short appreciation message |
| /cob | Close of Business | "I'll have this ready by close of business today." |
| /refund | Refund Policy | Full refund policy paragraph |
| /sig | Email Signature | Name, title, contact info |
| /ooo | Out of Office | Auto-reply template with {{returnDate}} |
| /improve | AI: Polish This | Sends current field text to AI for rewriting |
Conditions Pro
Conditions are rules that control when a command is visible and executable. A command with unmet conditions is hidden from the palette on that page — keeping your list clean and contextual.
All conditions must pass (AND logic). You can add multiple conditions to a single command.
Condition Types
| Type | What it checks |
|---|---|
| Site / Hostname | The domain of the current page (e.g. zendesk.com). |
| URL | The full URL of the current page. |
| Site Name | Recognized friendly name — Gmail, LinkedIn, GitHub, Slack, etc. |
| Selected Text Exists | Whether the user has text highlighted on the page. |
| Input Focused | Whether the cursor is inside a text field. |
Operators
| Operator | Meaning |
|---|---|
| contains | The field includes the value anywhere |
| equals | Exact match (case-insensitive) |
| startsWith | Field begins with the value |
| endsWith | Field ends with the value |
| exists | The field is not empty |
| notExists | The field is empty |
Condition Examples
Useful for AI "rewrite selection" commands — no text selected = command hidden.
Action Types
After a command's template is resolved, an action defines what happens with the resulting text. Most commands use the default Insert Text action, but you can chain multiple actions or pick alternatives.
| Action | What it does |
|---|---|
| Insert Text insert_text |
Types the resolved text into the focused input at cursor position. This is the default. |
| Replace Selection replace_selection |
Replaces highlighted text with the resolved text. Falls back to Insert Text if nothing is selected. |
| Copy to Clipboard copy_to_clipboard |
Puts the resolved text on your clipboard and shows a toast. Nothing is inserted. |
| Open URL open_url |
Opens a URL in a new tab. The template becomes the URL (variables are resolved, so you can build dynamic URLs). |
| Submit Form submit_form |
Inserts text then submits the nearest <form>. Shows a confirmation prompt first. |
| Click Button click_button |
Clicks a button on the page using a CSS selector. Useful for automating repetitive UI flows. |
| Chain Command chain_command |
Runs another command after this one completes. Lets you compose complex sequences. |
Action Examples
Copy to clipboard (no insertion)
Slash trigger /meet → copies your link to clipboard instantly. No text is typed.
Open a dynamic URL
You're prompted for the ticket ID, then the URL opens in a new tab.
Replace selected text (AI rewrite)
Highlight a paragraph → launch → AI replaces just the selected text with a shorter version.
Chain commands
Examples — Support Teams
Select the entire ticket thread, then run this command. The summary is inserted above or copied to clipboard.
Examples — Sales Outreach
Type a customer email when prompted — their HubSpot record opens instantly.
Examples — Recruiting
Examples — Developers
Highlight a function → run → AI explanation is copied to clipboard ready to paste into a comment or Slack.
Type your search term in the prompt → internal docs open in a new tab.
Ready to build your library?
Start with a few commands in your most-used workflow and grow from there.
Add cannedIQ to Chrome →