How to calculate Email Open Rate
Email open rate is the percentage of delivered emails that were opened. Privacy features that pre-load images make it unreliable on its own.
Formula
Open rate = unique opens ÷ emails delivered × 100SQL query
This example assumes: emails(id, campaign, delivered, opened_at). It is written in PostgreSQL syntax; date functions differ slightly in MySQL, BigQuery and SQLite, and your column names will differ from these.
SELECT campaign,
COUNT(*) FILTER (WHERE delivered) AS delivered,
COUNT(*) FILTER (WHERE delivered AND opened_at IS NOT NULL) AS opened,
COUNT(*) FILTER (WHERE delivered AND opened_at IS NOT NULL) * 100.0
/ NULLIF(COUNT(*) FILTER (WHERE delivered), 0) AS open_rate_pct
FROM emails
GROUP BY campaign
ORDER BY open_rate_pct DESC;Common mistakes that make Email Open Rate wrong
- Mail clients that pre-fetch images record opens that never happened, so treat open rate as a trend, not an exact count.
- Dividing by emails sent instead of delivered penalises you for bounces.
- Counting repeated opens by the same recipient inflates the rate; use unique opens.
Ask for Email Open Rate in plain English
Instead of writing the query yourself, you can type the question. SchemaChat turns it into SQL against your connected database or uploaded file, runs it, and shows the SQL and the figures it used so you can check the answer before you share it. It does not replace your judgement about the definition: check that the query matches the formula your business uses.
- What was the open rate of each campaign in the last 60 days?
- Which subject lines had the lowest open rate?