Reporting

Monitoring Results

Track submissions, view screenshots of filled forms, export activity, and measure reply rates.

Every form submission ContactID attempts is logged to your Activity page, whether it succeeded or failed. Here is where to find it, what each row shows, and how to filter down to what you need.

1. Where To See Your Sends

  • Sign in to your dashboard.
  • Click Activity in the left sidebar.
  • The Activity page shows every submission attempt, newest first.

2. What Each Row Shows

Every row in the table has:

  • Timestamp. When the submission was attempted.
  • Target URL. The website that was contacted.
  • Agent used. Which of your agents sent this.
  • Status. COMPLETED, FAILED, or SKIPPED.
  • Website credit cost. 1 for successful sends, 0 for failures.
  • AI cost. The AI wallet amount spent if AI Personalization was on.
  • Batch reference. Which Import Job this belongs to.

Click any row to open the detail panel with the full picture.

3. The Detail Panel

The detail panel opens on the right side of the screen and shows:

  • Target site preview. A small screenshot of the site at attempt time.
  • Message sent. The exact pitch that was submitted, including AI personalization if applied.
  • Subject line sent.
  • Failure reason (for FAILED sends).
  • Retry history if the URL was retried.
  • Reply status if reply tracking is enabled.

4. Filtering Activity

Filter chips at the top let you narrow the list:

  • Status. COMPLETED, FAILED, SKIPPED, or all.
  • Agent. Filter by which agent sent.
  • Date range. Last 24 hours, last 7 days, last 30 days, or custom.
  • Batch. Only sends from a specific Import Job.
  • Reply status. Only sends that got a reply (requires reply tracking on).

Multiple filters combine. Set status=COMPLETED + agent=partnership + last 7 days to see just successful partnership sends this week.

5. Search

The search bar in the top right filters by URL, target domain, or exact match on the pitch text. Useful to find “did I ever send to acme.com” or “which sends included the phrase ‘free portfolio'”.

6. Sorting

Click any column header to sort. Common patterns:

  • Sort by timestamp descending. (Default.) Most recent first.
  • Sort by AI cost descending. Find the most expensive sends.
  • Sort by target URL. Group by target domain.

7. Row Actions

Right-click any row (or use the three-dot menu at the row end) for:

  • View details. Open the detail panel.
  • Retry this send. Re-run through the current agent.
  • Copy target URL.
  • Export selected to CSV.
  • Delete this record. Removes from your Activity but does not reverse credits.

8. How Long Records Stay

Activity records are retained for 12 months. After that they are automatically deleted. Export important data to CSV within that window if you need long-term records.

Every send ends in either COMPLETED (success) or FAILED (failure), with SKIPPED as a third for sends never attempted. Here is what each really means, when it fires, and what the underlying rules are.

1. COMPLETED — What Really Happened

A COMPLETED status means all of these:

  • ContactID opened the target URL in a background tab.
  • The content script identified a contact form on the page.
  • Every required field was filled with agent data or AI-personalized text.
  • The submit button was clicked.
  • The target site returned a signal that the form was accepted (success page, thank-you message, HTTP 200 with success text, or redirect to a known success URL).

At this point, one website credit is consumed and the record is marked COMPLETED.

2. What COMPLETED Does Not Guarantee

COMPLETED means the submission was accepted by the site. It does NOT guarantee:

  • The recipient will read it. Contact form submissions land in an inbox that may not be actively monitored.
  • The recipient will reply. Reply rates vary hugely by pitch and target quality.
  • The message was not filtered out. Some sites route submissions through spam filters; you may pass at the form level and get filtered before reaching the human.

Successful send is a necessary but not sufficient condition for a reply.

3. FAILED — What Went Wrong

FAILED means one of the above steps did not complete:

  • Form not detected. Content script found no contact form.
  • Field could not be filled. A required field was of a type the extension does not handle (file upload, custom widget).
  • Submit was blocked. Bot protection or a JavaScript validation stopped the click.
  • No success signal. After clicking Submit, no acceptance signal was received within the timeout.
  • Network error. Something went wrong at the transport layer.

FAILED does not consume a website credit.

4. SKIPPED — Never Attempted

SKIPPED means the URL was in your queue but not actually processed:

  • Duplicate. URL was already in your queue or recently contacted.
  • Blocklisted domain. ContactID does not send to this domain.
  • You cancelled the batch before this URL was reached.

SKIPPED never consumes a credit and does not affect batch statistics.

5. Ambiguous Cases

Some real scenarios have to be classified but the outcome is not perfectly clear:

  • Site returned 200 but no explicit success page. Some sites accept form submissions silently. ContactID’s default is to mark COMPLETED if the response is 200 and no error text is on the page.
  • Site redirected to a page ContactID does not recognize as success. Marked COMPLETED if the response is 200 and no obvious error markers.
  • Site returned no response. Marked FAILED with reason “no response received”.

The classifier tends toward COMPLETED when the site behaves normally after submit. This can occasionally give false-positive completions on unusual sites; the tradeoff protects you from false-negative failures where a genuinely-successful submit gets marked FAILED.

6. Manual Reclassification

You cannot manually reclassify a send. If you believe a COMPLETED was actually a failure (or vice versa), the record stays as recorded. The classification is meant to reflect what ContactID observed at send time, not what actually happened at the target site’s downstream systems.

7. Success Rate Metrics

The Activity page shows aggregate success rates:

  • Today, this week, this month. Percentage of sends that were COMPLETED.
  • Per agent. Success rate broken down by which agent.
  • Per batch. Success rate for each Import Job.

Compare across agents and batches to spot patterns. A batch with 90% success rate on a Growth-plan list may be structurally different from a batch with 40% success on a scraped Scale-tier list.

Every ContactID user hits failed sends. The realistic goal is not zero failures but tuning your setup to keep failure rate at 20% to 30% on cold lists. Here are the biggest levers and what they buy you.

1. Typical Failure Rates

Reference points for a healthy batch:

  • Curated B2B list from a paid database: 10% to 20% failure rate.
  • Scraped list from public directories: 25% to 40%.
  • Scraped list from generic Google searches: 40% to 60%.
  • Unfiltered “any URL from the internet”: 60% to 80%.

Anything above 60% suggests fundamental list quality issues, not a ContactID problem.

2. List Quality Is The Biggest Lever

Clean lists have low failure rates because:

  • Real companies have real contact forms.
  • Real companies are hosted on standard platforms ContactID knows how to fill.
  • Real companies do not have aggressive bot detection at the contact form.

Investment in list quality pays back on every batch forever. If you send once a month, spend that money on data; if you send once a week, spend it on both data and ContactID’s higher plans.

3. The Common Failure Categories

Ranked by prevalence in typical batches:

  • Form not detected (30% to 40% of failures). The URL is a homepage, not a contact page.
  • Bot protection (25% to 35% of failures). Cloudflare, hCaptcha, reCAPTCHA.
  • Required field could not be filled (10% to 15%). File uploads, unusual pickers.
  • Network / timeout (10% to 15%). Slow sites, unstable connections.
  • Site rejected the submission (5% to 10%). Server-side errors, form validation.

4. Fixing Form-Not-Detected

Two patterns cause this:

  • URL is a homepage without a contact form. Add “/contact” or similar to the URL before importing, or use a list source that gives contact-page URLs directly.
  • Site has an unusual form layout ContactID’s detector does not recognize. Report the URL to support; detection improvements go into the next extension release.

5. Working Around Bot Protection

Not a lot you can do. See the article on bot detection. Options:

  • Remove Cloudflare-hosted domains from your list. Test-fetch each URL first; the Cloudflare header is a giveaway.
  • Contact these sites via LinkedIn or email instead.
  • Skip and move on. Bot-protected sites are structurally out of ContactID’s scope.

6. Reducing Timeout Failures

  • Lower concurrent tabs. If you are at 8, drop to 3. Fewer tabs get more browser resources each, so each loads faster.
  • Better internet. Fiber or 5G with 100+ Mbps upload keeps things smooth.
  • Run during off-peak hours if your batches are hitting sites that are slow during business hours.

7. Tuning The Agent

Some failures are agent-driven:

  • Pitch is too long. Some forms have character limits; a 5,000-character pitch fails silently on a form with a 2,000-character message field. Shorten the pitch.
  • AI Personalization runaway. If AI wallet is empty and fallback is disabled, sends fail with “AI unavailable”. Top up or enable fallback.

8. Tracking Failure Reasons Over Time

  • Go to Activity, filter to FAILED, group by reason.
  • Sort by count.
  • The top three reasons tell you where to focus improvements.

Rebuild your list to exclude the sites causing top failures, and you rebuild your success rate for the next batch.

For every send, ContactID captures a small screenshot at key moments. Screenshots help you verify a form was actually filled as intended, spot detection issues, and prove sends happened. Here is what is captured and how to use it.

1. What Gets Captured

Every send captures up to three screenshots:

  • Pre-fill snapshot. The form as it was detected, before any fields were filled.
  • Post-fill snapshot. The form with your agent data and pitch inserted, just before submit.
  • Post-submit snapshot. The result page after submission (success page, error message, or redirect target).

Screenshots are small (300 x 200 pixels compressed) to keep storage lean but readable enough to check field contents.

2. When Screenshots Are NOT Captured

  • SKIPPED URLs. No screenshot; the URL was never opened.
  • Failed at page-load stage. Only the pre-load state is captured (usually just a blank page).
  • Sites with strict CSP. Some sites block screenshot capture; the screenshot slot is empty.

Screenshot capture never affects the send outcome; a capture failure does not fail the send.

3. Where To See Screenshots

  • Open Activity.
  • Click a send row to open the detail panel.
  • Scroll to Screenshots.
  • Click any thumbnail to view full-size.

4. Using Screenshots For QA

Common quality checks:

  • Did the pitch land in the right field? Check the post-fill snapshot; you should see your pitch in the message body area, not in an unrelated field.
  • Are personalization tokens filled correctly? For AI Personalization, verify the personalized opener actually references the target.
  • Is the form fully filled? Check that name, email, and message are all populated.
  • Did the submission actually succeed? The post-submit snapshot shows the confirmation page.

5. Screenshots Are Private

Only you (and ContactID support if you share a specific record) can see your screenshots. They are stored in your account’s private storage and not visible to other users.

Screenshots are deleted alongside their Activity record after 12 months.

6. Downloading Screenshots

  • In the Activity detail, right-click any screenshot for a “Download image” option.
  • Or use Export This Send in the row menu to get a bundle: the CSV row, all screenshots, and the pitch content.

Useful for keeping a proof-of-send record for clients.

7. Disabling Screenshots

For privacy or storage reasons, some users prefer not to capture screenshots:

  • Go to Account Settings, then Privacy.
  • Toggle Capture Send Screenshots off.
  • New sends skip the capture step.

Disabling only affects new sends; old records still have their screenshots. Toggling off also slightly speeds up per-send processing (screenshot capture takes 100 to 300 milliseconds).

Exporting Activity to CSV lets you keep permanent records, import send history to your CRM, or analyze outcomes in a spreadsheet. Here is how to export at any scale.

1. The Export Button

  • Go to Activity.
  • Set any filters you want (date range, status, agent, batch).
  • Click Export in the top right of the page.
  • Pick a format (CSV or JSON).
  • Confirm.

The export downloads immediately for small result sets. For larger exports, it processes in the background and emails you a download link when ready.

2. What Fields Are In The Export

The CSV includes one row per send with these columns:

  • Timestamp (ISO 8601 format).
  • Target URL.
  • Target domain.
  • Agent name.
  • Status (COMPLETED, FAILED, SKIPPED).
  • Failure reason (blank if COMPLETED).
  • Subject sent.
  • Message sent (with AI Personalization applied if it was on).
  • Website credit cost.
  • AI cost.
  • Batch reference.
  • Retry count.
  • Reply status (if reply tracking is on).

3. Export Size Limits

  • Immediate download: up to 10,000 rows.
  • Background export: unlimited size, emailed as a download link. Available for 7 days.

For very large exports (over 100,000 rows), the file is split into multiple CSVs of 100,000 rows each.

4. Exporting To A CRM

Common CRMs (HubSpot, Salesforce, Pipedrive) accept CSV upload:

  • Export from ContactID with only the columns you want to keep.
  • Rename headers to match your CRM’s expected fields.
  • Upload as a “Companies” or “Contacts” batch import.

Some CRMs allow direct integration; ContactID does not have official CRM plugins yet but the CSV workflow works well.

5. Exporting Just A Single Batch

For per-batch exports:

  • Go to Import Jobs.
  • Click the batch’s row.
  • Click Export This Batch in the top right.

This gives you a single-batch CSV with the same columns.

6. Scheduled Exports (Scale Plan)

On the Scale plan, you can schedule automatic exports:

  • Go to Account Settings, then Automation.
  • Click New Scheduled Export.
  • Set frequency (daily, weekly, monthly).
  • Set delivery (email, webhook URL, or S3 bucket).
  • Save.

Scheduled exports run automatically and deliver to your chosen destination.

7. GDPR / Data Portability

Under GDPR and similar laws, you have the right to export a copy of your data at any time. ContactID’s export function covers this obligation. If you need a full account export (Activity plus agents plus profile data), use Account Settings > Export All Data.

Reply tracking tells you how many of your sends actually generated a reply, which is the metric that matters for cold outreach. Here is how ContactID’s reply tracker works, its accuracy, and its limits.

1. What Reply Tracking Does

When enabled, reply tracking connects your inbox to ContactID via IMAP or Gmail API. ContactID scans replies to your sending address and tags Activity records where a reply was detected.

You then see, per batch or per agent:

  • Reply count. Number of replies received.
  • Reply rate. Percentage of successful sends that got a reply.
  • Reply timing. How quickly replies came in.

2. Connecting Your Inbox

  • Go to Account Settings, then Integrations.
  • Click Connect Inbox.
  • Pick Gmail or Generic IMAP.
  • Authorize ContactID to read your inbox (Gmail: OAuth; IMAP: credentials).

The connection is read-only. ContactID cannot send emails from your account or modify existing emails; it only reads.

3. How Replies Are Matched To Sends

Matching uses the sender’s email address:

  • ContactID looks for incoming emails whose From address matches a domain of a URL you contacted.
  • If matched, the Activity record is tagged with the reply, plus timestamp, sender name, and preview of the reply body.

Match quality depends on the target site publishing an email address on the same domain as their website. When they do (typical for real businesses), matching is 90%+ accurate.

4. False Positives And False Negatives

  • False positive: ContactID marks a reply that is actually unrelated. Rare; usually happens when a target’s domain sends unrelated newsletters.
  • False negative: A real reply is not tagged. Happens when replies come from a different domain (e.g., an executive assistant using a personal email).

Neither is common enough to make the aggregate reply rate unreliable, but individual records may miss context.

5. Reply-Rate Reporting

  • Go to Activity or an individual Agent detail.
  • The Reply Rate KPI is at the top.
  • Filter by date range, batch, or agent.

Comparison is the interesting use: agent A got 3% reply rate vs agent B at 6%. Now you know which pitch to double down on.

6. Reading The Reply Content

Click a tagged Activity row to see:

  • The reply preview (first 200 characters).
  • A link to open the reply in your inbox (via Gmail deep link or IMAP thread).

ContactID does not surface the full reply body in the dashboard; you go to your inbox for full text. This keeps the dashboard fast and keeps sensitive reply content in your inbox where it belongs.

7. Privacy And Data

Enabling reply tracking gives ContactID read access to your inbox. Specifically:

  • ContactID scans only for messages whose sender domain matches a URL you contacted.
  • Non-matching emails are not read or stored.
  • Matched emails have their sender, timestamp, and first 200 characters stored; nothing more.

You can revoke access any time by disconnecting the inbox in Settings > Integrations.

8. Turning It Off

Toggle off in Settings > Integrations. All future replies are not tracked. Historic tags stay on the Activity records.

The Activity log is your comprehensive record of everything ContactID has done on your behalf: sends, imports, top-ups, plan changes, sign-ins. Here is how to use it for auditing, debugging, and reporting.

1. The Activity Log Vs The Sends List

Two related but distinct things:

  • The Sends list (Activity > Sends) is one row per form submission attempt.
  • The Activity log (Activity > Log) is broader: it also captures account-level events like sign-ins, plan changes, and top-ups.

Most day-to-day use is the Sends list; the full log matters for auditing.

2. What Events Are Logged

The Activity log records:

  • Form submissions (COMPLETED, FAILED, SKIPPED, cancelled).
  • Agent changes (created, edited, deleted).
  • Sign-ins (device, IP, timestamp).
  • Batch starts and stops.
  • Top-ups (website credits, AI wallet).
  • Plan changes (upgrades, downgrades, cancellations).
  • Setting changes (concurrency, notification preferences).

Every event has a timestamp, an actor (usually you), and enough detail to reconstruct what happened.

3. Filtering The Log

Filters mirror the Sends list:

  • Event type (sends only, sign-ins only, etc.).
  • Date range.
  • Actor (yourself vs. system-generated events).
  • Result (successes only vs. failures only).

4. Audit Use Cases

The log is useful when:

  • Something looks wrong and you want to trace back exactly what happened.
  • You need to prove a specific event (like when a plan was cancelled) for billing disputes.
  • You suspect account access from another device and want to check sign-in history.

5. Log Retention

Events are retained for:

  • 12 months for send events.
  • 24 months for financial events (plan changes, top-ups, payments).
  • 6 months for setting and configuration changes.
  • 12 months for sign-in events.

After retention, events are deleted automatically.

6. Downloading The Log

  • Click Export on the Activity log page.
  • Pick date range and event types.
  • Download as CSV.

Same background-processing rules as Activity exports: over 10,000 rows triggers a background job with email delivery.

7. Suspicious Activity Alerts

ContactID monitors the log for patterns that might indicate account misuse:

  • New device sign-in without prior history triggers an email alert.
  • Impossible-geography sign-in (US then EU in an hour) flags for review.
  • Large plan changes get a confirmation email even for the account owner.

If you see one of these alerts and it was not you, sign out everywhere immediately (see the Sessions article) and change your password.

Still stuck? We’re happy to help.

Install the extension, sign up, or reach out to support directly.

Back to Help Center