Tracking
Tracking and Analytics in GQ CRM: Opens, Clicks, Bounces, and Replies
Understand per-recipient open/click tracking, hard vs soft bounce classification, and which metrics actually matter for cold email. Includes plan gating notes and honest-tracking caveats.
Published August 21, 2026
Tracking turns a bulk send into intelligence: which recipients opened, who clicked, what bounced and why. This guide explains what GQ CRM records, what the numbers really mean, and which metrics deserve your attention (hint: it's not opens).
1. What GQ CRM tracks
Each sent email is tracked per recipient:
- Opens — when the recipient's client loads the tracking pixel
- Clicks — when the recipient clicks a tracked link in the message
- Bounces — send failures classified as hard or soft with a normalized reason
- Send status — sent, failed, skipped, pending, per recipient
Data is visible in the task's recipient table, the History page, and aggregated counters on the task and its analytics.
2. Hard vs soft bounces
When an SMTP send fails, GQ CRM classifies the failure from the relay's error:
| Type | Meaning | Examples | Action |
|---|---|---|---|
| Hard | Permanent failure | MAILBOX_NOT_FOUND, MAILBOX_UNAVAILABLE, DOMAIN_NOT_ACCEPTING_MAIL | Remove from future sends — the address is dead |
| Soft | Temporary failure | MAILBOX_TEMPORARILY_UNAVAILABLE, MAILBOX_FULL | Keep for retry — it may work later |
The normalized type and detail are stored per recipient, a failed email_logs row is written, and aggregate counters (hardBounceCount / softBounceCount) appear on the task and in its analytics.
3. Which metrics actually matter
Cold email tracking is easy to misread. The honest hierarchy:
- Bounce rate — the number that protects your domain. High hard bounces mean list problems; fix the list, not the copy.
- Complaint rate — above ~0.1% is corrosive; honor unsubscribes and remove anyone who asks.
- Reply rate — the metric your pipeline runs on (see the reply-rate post).
- Clicks — useful when your email has a link worth clicking.
- Opens — the most misleading metric. Mail-client privacy features (Apple Mail Privacy Protection, Gmail image proxying) mean open pixels undercount: a recipient can read your email without ever firing the pixel. Treat opens as directional, not definitive.
On plan gating: tracking (opens/clicks) is a paid feature — the Free plan has no tracking. On Free, no tracking IDs are generated and analytics returns 403, so the UI shows an upgrade prompt instead of fake zeroed data.
4. Using the data
- Prioritize follow-ups by engagement. Open a contact that engaged and create a follow-up task — sequence follows attention instead of guesswork (see the follow-up strategy).
- Prune by bounces. After a send, drop hard-bounced addresses from future campaigns; keep soft-bounced ones for retry.
- Review invalid reasons. Verification flags (
INVALID_FORMAT,DISPOSABLE_DOMAIN,DUPLICATE,RESERVED_DOMAIN) tell you where your list sourcing is failing — fix the source, not the symptoms (see the recipients guide). - Export for offline analysis. The export endpoint (
/api/email-tasks/[id]/recipients/export?format=csv) givesEmail,Status,IsValid,InvalidReason,SentAt,Errorfor deeper analysis in your own tools.
5. Caveats that keep you honest
- Tracking requires a public URL.
NEXTAUTH_URLmust be a public domain; if it containslocalhost/127.0.0.1, tracking links are still injected but recipients cannot resolve them — real tracking is effectively disabled. - Opens undercount by design. Use clicks and replies as your reliable engagement signals.
BLOCK_OUTBOUND_EMAILS=true(staging environments) blocks all outbound mail, including test sends — don't expect tracking data from staging.
Troubleshooting
- No opens at all — check that
NEXTAUTH_URLis a public domain and that the recipient's client doesn't proxy images (common on enterprise mail). - Open rate lower than expected — expected; proxies undercount. Compare clicks and replies instead.
- Hard bounces piling up — your list wasn't verified; run verification before the next send and prune the invalid addresses.
- Upgrade prompt on analytics — tracking is gated to paid plans; on Free, analytics returns 403 by design.
Tracking is only as good as the questions you ask it. Use bounces to protect your domain, replies to measure your pipeline, and opens as a rough directional signal — nothing more.