Press list sheet for a product launch or Black Friday pitch: the press and media inboxes each publication publishes, in one Google Sheet with a pitch and follow-up tracker
What you get: one Google Sheet with one row per publication you want to pitch (magazines, blogs, newsletters, gift-guide sites), showing the press or media inbox the publication publishes on its own website, a general inbox as a fallback, a next-step column that tells you what to do when no press inbox was found, a UK sole-trader flag (they need consent before a marketing email), and a pitch tracker with one follow-up date and a do-not-contact column. Built for small brands, Shopify and WooCommerce shops and PR freelancers pitching a product launch, a Black Friday offer or a Christmas gift guide.
The finished sheet
press tab (example rows are made up)
| Domain | Status | Press inbox | Fallback | Named inboxes dropped | Next step | Type | Pitched on | Follow up on | Send? |
|---|---|---|---|---|---|---|---|---|---|
| giftmag.example | ok | press@giftmag.example | 0 | Pitch press inbox | Corporate | 2 Nov 2026 | 9 Nov 2026 | Wait | |
| homeblog.example | ok | hello@homeblog.example | 0 | Use general inbox and ask who covers gifts | Corporate | Ready | |||
| citynews.example | ok | 3 | Site lists named inboxes: read its contact page | Corporate | Ready | ||||
| bigdaily.example | blocked-by-terms | Skipped: open the site's contact page yourself | Corporate | Ready | |||||
| janewrites.example | ok | hello@janewrites.example | 0 | Use general inbox and ask who covers gifts | Sole trader | NO: UK sole trader, consent first |
Who this is for
- Small brands and shop owners who want 20 to 100 publications to hear about one product, offer or launch, and want the inbox each publication itself publishes, not a guessed
firstname@. - PR freelancers and small agencies building a fresh media list for a client before Black Friday (Friday 27 November 2026) and Christmas.
- Anyone who already has a list of publication websites and wants the contact column filled in one run.
Step 1: list the publications in a tab named sites
| Column | What to put |
|---|---|
| A Publication | Name, for example "Gift Mag" |
| B Website | The homepage, for example https://www.giftmag.example |
| C Beat | Gifts, home, tech, food, local news... |
| D Type | Corporate (a company or other corporate body) or Sole trader (a one-person blog or newsletter run by an individual). This decides Step 4. |
Pick publications that really cover your kind of product. A short list of relevant titles gets more replies than a long list of random ones, and it keeps you inside the "relevant, one to one" rule in Step 4.
Step 2: run the contact scraper on the websites
Open the website contact scraper on the Apify Store and paste column B into urls (one per line) or startUrls. What it does with the default settings, as written in the Actor's input schema and README on 21 October 2026:
- Reads the homepage plus the most contact-like pages (contact, about, impressum, support):
maxPagesPerSiteis 4 by default. Publications often put the press inbox on a deeper page, so try 6 to 8 if many rows come back empty. - Returns only shared role inboxes.
press@,media@,pr@,marketing@,hello@,info@andcontact@are on its role list. Addresses that identify one person are dropped and only counted inpersonalEmailsDropped(includePersonalEmailsis off). - Checks each inbox's domain can receive mail (
mxValid) and records the page it was found on (foundOn). - Follows robots.txt and reads each site's terms. A site whose terms forbid scraping comes back as
blocked-by-terms, and blocked rows are not charged. Expect this on some large news sites; you look those up by hand.
Honest limit: in the current version, newsroom-style addresses such as editor@, editorial@, news@, newsdesk@ or tips@ are not on the role list, so with the default setting they are dropped and counted, not shown. The sheet turns that count into a "read its contact page" step instead of hiding it. Only switch on includePersonalEmails if you have a lawful basis and will honour opt-outs.
When the run finishes, export the dataset as CSV, then in your sheet use File, Import, Insert new sheet, and rename it scrape. Nested fields become headers like emails/0/email, emails/1/email and emails/0/mxValid, so the formulas below find columns by header name, not by position.
Step 3: build the press tab
Create a tab named press, put these formulas in row 2, and fill down as many rows as scrape has.
| Col | Header | Formula (row 2) |
|---|---|---|
| A | Domain | =IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH("domain", scrape!$A$1:$ZZ$1, 0)), "") |
| B | Status | =IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH("status", scrape!$A$1:$ZZ$1, 0)), "") |
| C | All inboxes | =IFERROR(TEXTJOIN(", ", TRUE, FILTER(scrape!$A2:$ZZ2, REGEXMATCH(scrape!$A$1:$ZZ$1, "^emails/\d+/email$"))), "") |
| D | Press inbox | =IFERROR(REGEXEXTRACT(", "&C2, ", ((?:press|media|pr|socialmedia)(?:[.\-_][a-z0-9]+)?@[^,]+)"), "") |
| E | Fallback | =IF(D2<>"", "", IFERROR(REGEXEXTRACT(", "&C2, ", ((?:hello|contact|info|marketing|partnerships)(?:[.\-_][a-z0-9]+)?@[^,]+)"), "")) |
| F | Named inboxes dropped | =IFERROR(INDEX(scrape!$A2:$ZZ2, MATCH("personalEmailsDropped", scrape!$A$1:$ZZ$1, 0)), 0) |
| G | Next step | =IFS(B2<>"ok", "Skipped ("&B2&"): open the site's contact page yourself", D2<>"", "Pitch press inbox", N(F2)>0, "Site lists named inboxes: read its contact page", E2<>"", "Use general inbox and ask who covers "&IFERROR(INDEX(sites!$C:$C, MATCH("*"&A2&"*", sites!$B:$B, 0)), "your beat"), TRUE, "No inbox found: use the site's contact form") |
| H | Type | =IFERROR(INDEX(sites!$D:$D, MATCH("*"&A2&"*", sites!$B:$B, 0)), "") |
| I | Bad MX | =IFERROR(SUMPRODUCT(--(UPPER(TO_TEXT(FILTER(scrape!$A2:$ZZ2, REGEXMATCH(scrape!$A$1:$ZZ$1, "^emails/\d+/mxValid$"))))="FALSE")), 0) (above 0: one of the inboxes has no mail server; do not use it) |
| J | Pitched on | Type the date you sent the pitch |
| K | Follow up on | =IF(J2="", "", WORKDAY(J2, 5)) |
| L | Reply | Type: Interested / Not now / No |
| M | Do not contact | Type Y the moment anyone asks you to stop or replies "No" |
| N | Send? | =IFS(M2="Y", "NO: do not contact", H2="Sole trader", "NO: UK sole trader, consent first", J2="", "Ready", AND(L2="", TODAY()>=K2), "Send one follow-up", TRUE, "Wait") |
Add a filter on column N and work only the rows that say Ready or Send one follow-up. One follow-up is enough; after that, mark the row and move on.
Step 4: the rules your pitch must follow (UK example)
This is a summary of the UK ICO's electronic mail marketing guidance as read on 21 October 2026, not legal advice. The ICO notes this guidance is under review after the Data (Use and Access) Act, so check the official source before you send.
- Companies and other corporate bodies: the ICO says you can send marketing emails to them, and it is good practice to keep a "do not email" list of any that object. That is column M.
- Sole traders and some partnerships are treated as individuals: you need their specific consent (or the existing-customer "soft opt-in"). That is why column N says NO for them. Many one-person blogs and newsletters fall here.
- Every message: do not hide who you are, and give a valid address to opt out.
- Named addresses at a company (for example a person's own work email) also bring data protection rules into play, which is why the scraper drops them by default.
In the EU, the ePrivacy Directive's consent rule for marketing email covers individuals, and each country decides how far it also protects companies, so the rules differ by country. Check your national regulator's guidance. Elsewhere, check the official source for your country.
Step 5: a short pitch that fits the sheet
Subject: Gift idea under 25: [product] for your [beat] coverage Hi [Publication] team, I run [brand], a small [country] shop. Our [product] is [one line on what it is and why your readers would care]. Price: [price]; stock is confirmed until [date]. Photos and details: [link]. I can send a sample to whoever covers [beat]. Is there a deadline for your gift guides this year? [Your name], [brand], [website] If you'd rather not hear from us, reply "no" and we won't email again.
Send each pitch one at a time from your normal inbox, change the first two lines for each publication, and fill in column J the same day. If the publication says it was given a free product, it may need to disclose that to its readers; that is their call, but say clearly in your pitch whether a sample or a paid placement is involved.
Timeline to Black Friday and Christmas
- This week (to 31 October): build the sites tab, run the scraper, fill the press tab, write your pitch.
- 2 to 6 November: send the Ready rows. Ask each publication for its gift-guide deadline; deadlines differ, so do not assume one.
- From 9 November: send one follow-up to rows that say "Send one follow-up"; mark every "No" as do-not-contact.
- Friday 27 November (Black Friday) and Monday 30 November (Cyber Monday): tell anyone who featured you if a price or stock level changed.
- December: reuse the sheet for Christmas; filter out every row with M = Y first.
Partner programme opening soon
Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.
Sources
- Corporate bodies vs sole traders, soft opt-in, do-not-email list, identity and opt-out address, guidance under review after the Data (Use and Access) Act: ICO, Electronic mail marketing (read 21 Oct 2026)
- EU rule on unsolicited communications: Directive 2002/58/EC (ePrivacy), Article 13, on EUR-Lex. Check the official source and your national regulator.
- Contact scraper inputs and outputs (
urls,startUrls,maxPagesPerSitedefault 4,includePersonalEmailsoff,personalEmailsDropped,mxValid,foundOn, statuses such asblocked-by-terms, blocked sites not charged): Apify Store page (Actor input schema and source read 21 Oct 2026) - Black Friday 2026 is Friday 27 November (the day after US Thanksgiving, Thursday 26 November); Cyber Monday is 30 November.
Related
- Find public role emails (sales@, press@, support@) on a company website without guessing
- Gift guide shortlist sheet for Black Friday and Christmas (the publisher's side)
- Trade fair exhibitor contact sheet
- Clean an Apify contact CSV into a call sheet
- Competitor store discount sheet for Black Friday
Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.