Chrome 116+ · Side panel

Chrome extension

A complete guide to installing the extension, connecting a secure account token, discovering and verifying addresses across browser tabs, and turning verified results into reusable lists and CSV files.

What the extension does

The MailTooth Chrome extension turns the Chrome side panel into a browser research workspace. It scans accessible webpage content for public email addresses, creates a deduplicated collection for each browser tab, verifies new discoveries with your connected account, and lets you save completed results without leaving the page.

Discover automatically

Find direct, obfuscated, dynamic, framed, and Cloudflare-protected addresses in accessible page content.

Verify before saving

Run Quick, Standard, or Deepcheck automatically, one address at a time, with a mode-specific 24-hour cache.

Keep useful results

Save completed verifications and their source URL to synced lists, then review or export them as CSV.

Best for browser-led researchUse the extension when you are building a list one webpage at a time and source context matters. If you already have a CSV or text file, use the Bulk verification API instead.

Before you begin

Make sure you have all of the following:

  • Google Chrome version 116 or later. The extension uses Chrome's side-panel platform and is not documented for other browsers.
  • An active MailTooth account with credits. Discovery is free; automatic verification uses the connected account's credit balance.
  • Permission to manage API keys in the selected account. This is what makes the Chrome extension tab appear under dashboard Settings.
  • The official Chrome Web Store listing or an unpacked extension package supplied by MailTooth. Do not install a package from an untrusted third party.

Each browser profile or device should have its own extension token. Separate tokens make activity recognizable and let you disconnect one device without affecting another.

Install and open the extension

Install from the Chrome Web Store

  1. Open the official MailTooth listing supplied to your account and select Add to Chrome.
  2. Review Chrome's permission prompt, then select Add extension. The purpose of every permission is documented below.
  3. Open Chrome's Extensions menu, find MailTooth, and select the pin if you want its toolbar button to remain visible.
  4. Click the MailTooth toolbar button. Chrome opens the extension in the side panel next to your current page.

Install an approved unpacked package

Use this method only for a beta, test, or organization-managed build supplied by MailTooth. An unpacked extension does not update automatically.

  1. Extract the supplied archive to a permanent local folder. The selected folder must contain manifest.json directly; do not select the archive itself or an extra parent folder.
  2. Open chrome://extensions in Chrome and enable Developer mode.
  3. Select Load unpacked and choose the extracted extension folder.
  4. Confirm that MailTooth — Email Finder appears and is enabled, then pin and open it from Chrome's Extensions menu.
Updating an unpacked buildReplace the package with the approved new version, open chrome://extensions, choose Reload on the extension, and reload any webpages that were already open. Never overwrite the folder while Chrome is loading it.

Connect your account

The extension uses a dedicated scoped token. It does not accept your password or a regular developer API key.

  1. Open Dashboard → Settings → Chrome extension. If this tab is not visible, ask an account owner or administrator with API-key management permission for help.
  2. Select Create token. Enter a recognizable device name, such as Chrome on Priya's work laptop. Names can be up to 100 characters.
  3. Copy the complete secret beginning with mailtooth_ext_. It is displayed only once. If you close the dialog before copying it, revoke that token and create another.
  4. Open the MailTooth side panel and paste the secret into Extension access token.
  5. In MailTooth API URL, enter the API origin only:
    https://api.mailtooth.com
    Do not append /v1, /extension, or a trailing slash. Organization-managed staging environments should use the API origin provided by their administrator.
  6. Select Connect account. A successful connection validates the token and loads the account identity and saved lists.
Shown once

The complete token is returned only at creation. The dashboard later shows its prefix, status, creation time, and last-used time.

Narrowly scoped

The token can verify through the extension and manage its email lists, but cannot access developer API-key endpoints.

Independently revocable

Revoke one device from dashboard settings without deleting its saved lists or changing another device's token.

Discover email addresses while browsing

Once installed, the extension scans every accessible frame after a webpage becomes idle. It rescans when page content, attributes, form values, slots, browser history, hashes, or URLs change. It also rescans when you switch back to a browser tab or select the manual refresh action.

  1. Open a normal http or https webpage relevant to your research.
  2. Open the MailTooth side panel. The toolbar badge shows the number of unique addresses collected for that Chrome tab.
  3. In Browser tabs, choose any collected tab. TheCurrent badge identifies Chrome's active tab.
  4. Review the page card. Collected is the number of unique addresses, Valid is the completed valid count, and Pending is the number still queued.
  5. If content appeared late or you want to force another scan, selectRescan current tab. The action is available only for Chrome's active tab.

What is inspected

SourceExamples
Page text and commentsVisible text, text rendered in the DOM, and HTML comments.
Links and attributesmailto links and values in element attributes, including hidden or data attributes.
FormsCurrent values in inputs, text areas, selects, options, buttons, and outputs.
Metadata and stylesPage title, URL, metadata elements, structured-data attributes, and readable stylesheet rules.
Scripts and templatesInline script or style text and content inside HTML templates.
Dynamic componentsOpen shadow roots, slots, and content added or changed after the page loads.
Embedded documentsAccessible frames and same-origin iframe, frame, or object documents.
Protected or obfuscated textCloudflare-protected addresses, common [at]/(at) and [dot]/(dot) forms, HTML entities, and escaped @ or dot characters.

Candidates are normalized to lowercase and deduplicated. Before an address is published to the side panel, the extension applies conservative mailbox syntax, URL-context, domain-label, and ICANN public-suffix validation. This removes many code fragments and URL credentials that only resemble email addresses.

What is not inspected

  • Pixels inside images, screenshots, canvas elements, video, or other content that would require optical character recognition.
  • Closed shadow roots, blocked cross-origin stylesheet rules, and content Chrome does not expose to extensions.
  • Chrome internal pages, the Chrome Web Store, protected browser UI, and other schemes where Chrome blocks content scripts.
  • Content behind access controls you have not legitimately opened. The extension does not bypass authentication, paywalls, CAPTCHAs, or bot protections.

How tab collections behave

A collection belongs to a Chrome tab, not only to its current URL. It grows cumulatively as you refresh or navigate that same tab, while each address retains limited source-page history. This makes multi-page research durable, but it also means an address from a previous page can remain in the tab's collection.

Closing a Chrome tab removes its collection. Refreshing, navigating within the tab, or suspension of Chrome's extension service worker does not clear it.

Automatic verification and credits

Discovery and verification are separate. Page scanning happens locally without credits. When the connected side panel is open, each new uncached address in the loaded collection enters a deduplicated first-in, first-out queue. Exactly one address is verified at a time to keep processing predictable.

ModeWhat it is forCost per result
quickFast address and domain screening. The individual mailbox is not contacted.0.5 credit
standardAddress and domain screening plus provider, reputation, authentication, DNSBL, parking, and WHOIS intelligence. The individual mailbox is not contacted.1 credit
deepcheckThe complete check, including an attempted SMTP mailbox and catch-all assessment.2 credits
Choose the least expensive evidence you needQuick and Standard can report a valid address while the mailbox isnot_checked. This means syntax, domain, and MX checks passed; it does not claim that the individual inbox exists. Choose Deepcheck when mailbox-level deliverability matters.

Queue and cache behavior

  • An address is added only once to the current in-memory queue, even if the page exposes it in several locations or frames.
  • Completed results are cached in Chrome local storage for 24 hours, keyed by verification mode and normalized email address.
  • Revisiting an address within 24 hours reuses the result only when the selected mode is the same, avoiding an unnecessary repeat charge.
  • Changing from Quick to Standard or Deepcheck loads that mode's own cache and queues any address without a fresh result for that mode.
  • A failed request is shown on its row and can be retried. Unknown verification outcomes are free; authentication, network, and insufficient-credit errors do not create a usable result.

Review, filter, select, and delete results

Every row shows the normalized address and its current state. Pending rows show a loader, failed rows show a retry action, and completed rows show a status or score. When mailbox evidence exists, the row also summarizes mailbox status and risk.

ResultMeaningRecommended handling
validSyntax, domain, and MX checks passed.Suitable for domain-level acceptance. Use Deepcheck when the individual mailbox must be confirmed.
invalidA conclusive syntax, domain, MX, or mailbox check failed.Do not use the address unless you can correct or independently confirm it.
unknownA required check could not produce a reliable answer.Review or retry later. Unknown verification outcomes are not charged.
mailbox: not_checkedThe selected mode did not check the mailbox, or the mailbox check was skipped for this address.Do not interpret this as an undeliverable mailbox. Run Deepcheck if mailbox evidence is required.
mailbox: deliverable / risky / undeliverableDeepcheck returned mailbox-level evidence.Accept, review, or reject according to your outreach policy and the reported risk.

Filters

  • All shows every discovery, including pending, failed, invalid, valid, and unknown rows.
  • Valid shows completed results withaddressStatus: valid.
  • Unknown shows completed results withaddressStatus: unknown.
  • There is no separate Invalid filter. Invalid results remain available under All.

Selection and deletion

Select a row with its checkbox or by clicking the row. Select all applies to the complete tab collection, not only the currently filtered rows. Delete removes selected discoveries; the trash action in the page card clears the complete collection for that tab.

Deletion is intentionally sticky for the open tabA deleted address is suppressed from later DOM rescans in the same tab, so it does not immediately reappear. To start a completely new collection that can discover it again, close that Chrome tab and open a new one.

Save lists and download CSV files

A selected address becomes saveable after it has any completed verification result. This can include valid, invalid, or unknown outcomes, allowing your team to retain evidence for review instead of silently discarding it. The Save button displays only the number of verified selected rows.

Save from Discover

  1. Select the completed results you want to keep.
  2. Select Save. Choose an existing list, or enter a name to create a new list from the current page.
  3. Confirm Save. Each item includes its normalized address, address and mailbox status, risk, score when available, verification mode, complete verification result, first retained source URL, and verification time.

An email address is unique within a list. Saving the same normalized address to that list again updates its result, source, and verified time instead of creating a duplicate row. A single save operation can contain up to 100 selected items.

Review and export from the side panel

  1. Open Saved. Lists are ordered by their most recent update and show total and valid counts.
  2. Open a list to review each saved email, mailbox status, and status or score.
  3. Select the download action on a list card. Chrome opens its normal Save dialog for a CSV whose filename is derived from the list name.
CSV columnContents
emailNormalized email address.
address_statusvalid, invalid, or unknown.
mailbox_statusnot_checked, deliverable, risky, undeliverable, or unknown.
risk_levellow, medium, high, or unknown.
scoreNumeric score when the selected verification mode returned one.
source_urlRetained webpage URL associated with the discovery.
verified_atTimestamp recorded when the item was saved or updated.

You can also open Saved email lists in the dashboard to create and delete lists, review synced results, and download a CSV. The dashboard export additionally includes the verification mode.

Change preferences or disconnect

Automatic verification mode

Open the side-panel settings action, choose Quick, Standard, or Deepcheck, then select Save preferences. The new mode applies to subsequent work and loads its own 24-hour cache. Changing the dropdown without saving does not finish the preference change.

API URL

Hosted customers should keep https://api.mailtooth.com. Change this only when an organization administrator gives you a different environment origin. An invalid origin prevents connection, verification, and list synchronization.

Disconnect this device

Disconnect removes the locally stored token and verification cache, clears the connected session in the side panel, and returns it to the connection screen. It does not revoke the server-side token, remove tab discoveries, or delete saved lists. Revoke the token in dashboard settings as well if the device should no longer be authorized.

Revoke a device token

  1. Open Settings → Chrome extension.
  2. Find the device by its name, token prefix, and last-used time, then select Revoke and confirm.
  3. Future extension API requests with that token fail immediately. The record remains visible as revoked and saved lists are retained.

Chrome permissions, privacy, and security

Chrome shows a broad webpage-access warning because the same scanner must work on the sites you choose to research. The extension does not need this access to bypass site controls; it needs it to inspect the accessible DOM on arbitrary webpages and frames.

PermissionWhy it is needed
Side panelShows the discovery, verification, saved-list, and settings interface beside the current webpage.
StorageStores connection settings, the 24-hour verification cache, and extension state in the Chrome profile.
Tabs and active tabAssociates discoveries with the correct browser tab, shows the current page, reacts to tab changes, and requests a rescan.
DownloadsCreates a CSV file only when you choose Download CSV.
Access to webpagesRuns the scanner on accessible http and https pages and their accessible frames. This broad access is required because discovery happens on whichever sites you research.

What stays in Chrome

  • The raw extension token, API origin, selected verification mode, and 24-hour result cache are stored in extension-local Chrome storage for that browser profile.
  • Cumulative tab discovery state is stored in the extension's local IndexedDB database so it can survive page refreshes, navigation, and service-worker suspension.
  • CSV content is assembled locally and sent to Chrome's download manager only when you request a download.

What is sent to MailTooth

  • The token is sent as a Bearer credential only to the configured API origin for connection, verification, and list requests.
  • Discovered addresses are sent individually for automatic verification when their queue item runs. The extension does not upload the complete page DOM as part of verification.
  • When you save results, the selected verification data and retained source URL are stored in the connected account's email list.
Use extension tokens like passwordsDo not share them in chat, email, screenshots, tickets, source control, or public documents. Create one per device, revoke it when a device is lost or reassigned, and connect only to a trustedMailTooth API origin.

Responsible use

Only collect and use contact data when you have a lawful purpose and permission to do so. Follow applicable privacy, anti-spam, and data protection rules, the website's terms, and your organization's retention and outreach policies. A technically discoverable address is not automatically consent to contact its owner.

Persistence and operational limits

Local state is deliberately bounded to keep long research sessions responsive. At a boundary, new addresses may be ignored or the oldest source metadata may roll off, depending on the resource, while the retained collection remains usable.

ResourceLimit
Discovered addresses5,000 unique addresses per browser tab
Visited page URLs100 per browser tab
Source URLs20 retained URLs per discovered address
Observed frames/documents2,000 per browser tab
Toolbar badgeDisplays up to 99; larger counts remain available in the side panel
Verification cache24 hours, separated by Quick, Standard, and Deepcheck mode
  • Collections survive a page refresh, same-tab navigation, and extension service-worker suspension.
  • Closing a browser tab deletes that tab's discovery collection. Saved server-side lists and the verification cache are separate and are not deleted with the tab.
  • Clear or Delete suppresses those addresses for the remaining life of the open tab so automatic rescans do not restore them.
  • Discovery order is based on first-seen time. The browser-tabs index is ordered by most recently scanned tab.

Troubleshooting

Start with the matching symptom below. Error messages from the API also appear in a dismissible red alert at the top of the side panel.

The side panel will not open
  1. Confirm you are using Chrome 116 or later and that the extension is enabled at chrome://extensions.
  2. Open a regular http or https page, then click the extension toolbar icon again.
  3. Reload the extension after installing an unpacked update, and reload the webpage as well.
The Chrome extension settings tab is missing
  1. Make sure you are signed in to the intended MailTooth account.
  2. Extension-token management requires the account permission used to manage API keys. Ask an account owner or administrator to create the token if your role does not have it.
The token cannot connect
  1. Paste the complete token beginning with mailtooth_ext_. Spaces before or after it are removed automatically.
  2. Use the MailTooth API origin shown in this guide, without a path such as /v1/extension.
  3. Check the token table in Settings → Chrome extension. A revoked token cannot be reused; create a replacement.
  4. If the token was lost after closing the one-time dialog, revoke that record and create a new token.
No emails are discovered
  1. Wait for the page content to finish loading, then choose Rescan current tab.
  2. Confirm the address is present in the page DOM. Text inside an image, canvas, video, PDF viewer, closed shadow root, or inaccessible browser page cannot be read.
  3. Chrome blocks extensions on internal pages, the Chrome Web Store, and some protected surfaces. Open a normal webpage instead.
  4. The scanner rejects malformed candidates and domains without a recognized public suffix to reduce false positives.
An address appeared on an earlier page
  1. This is expected: a tab collection is cumulative across refreshes and same-tab navigation.
  2. Use Delete for selected addresses or Clear all discovered emails to remove them. Deleted discoveries stay suppressed for that tab, even if a later rescan sees them again.
  3. Close the browser tab to remove its complete discovery collection and start a new tab-level collection.
Verification is pending or failed
  1. Keep the connected side panel open. New addresses are verified one at a time in first-in, first-out order.
  2. Confirm the account has enough credits for the selected mode and that the network can reach the configured API URL.
  3. Use the retry icon on a failed row. Temporary unknown outcomes can also be retried later.
Save is disabled or saves fewer addresses than selected
  1. Only addresses with a completed verification result can be saved. Wait for selected pending rows to finish.
  2. The Save button count is the number of verified selected rows, which may be lower than the total selection.
  3. Choose an existing list or enter a new list name before confirming Save.
A list or CSV looks out of date
  1. Return to All lists and reopen the list so the extension fetches its current contents.
  2. Lists are loaded when the extension connects. Disconnect and reconnect if another device created a list that is not shown in the current list picker.
  3. Saving the same email to the same list updates that list item rather than creating a duplicate.

Frequently asked questions

Does discovery consume credits?

No. Scanning, deduplication, selection, deletion, list browsing, and CSV creation do not consume verification credits. A verification request consumes credits according to its selected mode; unknown outcomes are not charged.

Does the extension verify every discovered address automatically?

When the connected side panel is open, new uncached discoveries in the loaded tab collection enter a one-at-a-time verification queue. Discovery itself continues on accessible pages even when the panel is closed, and those addresses can be verified when you next open their collection.

Can I use a regular developer API key?

No. The extension requires a dedicated token beginning with mailtooth_ext_. Extension tokens can use extension verification and list operations, but cannot call developer API-key endpoints. Regular API keys should never be pasted into the extension.

Can I connect more than one computer?

Yes. Create a separately named extension token for each browser profile or device. This makes last-used activity understandable and lets you revoke one device without interrupting the others.

What happens when I change verification mode?

The preference is stored locally. The extension loads the 24-hour cache for the newly selected mode and queues addresses that do not have a fresh result for that mode. A Quick result is not reused as a Deepcheck result.

Why does Quick or Standard show valid when the mailbox is not checked?

Valid means the syntax, domain, and MX checks passed. Quick and Standard intentionally do not contact the individual mailbox, so mailbox.status remains not_checked. Use Deepcheck when mailbox-level evidence is required.

What happens if I disconnect or revoke a token?

Disconnect removes the local token and verification cache from that Chrome profile, but does not delete discoveries or server-side saved lists. Revocation immediately blocks future API calls from that token; saved lists remain available.

Does the extension bypass website access controls?

No. It only reads content Chrome exposes to the extension on pages you can access. It does not bypass authentication, paywalls, CAPTCHAs, bot controls, closed shadow roots, or browser-protected pages. You remain responsible for lawful use and the website's terms.

Ready to connect Chrome?

Create a dedicated device token, copy it once, and connect the side panel using the API origin documented above.

Create extension token