/

Results appear as you type. Use the up and down arrow keys to move through them and Enter to open one.

Role-split emails, contact pages and website technology columns

Twenty-four of the 64 columns are read from the business’s own website rather than from the map listing. What each one is for, what it looks like, and how complete they actually are.


A map listing gives you a name, an address, a phone number, hours and a rating. It never gives you an email address, never tells you who works there, and never tells you what the business runs its website on. Twenty-four of the 64 export columns come from somewhere else entirely: the business's own website.

These are the columns that turn a directory row into something you can actually open a conversation with, so they are worth understanding one at a time.

Read this before you plan around them

Website enrichment is still being rolled out. The columns are in every file, in the order below, from the first export you run — but a column that is present is not a column that is filled, and coverage on the enrichment fields is climbing rather than complete. Nothing here describes a value we invent: when we have not read it, the cell is empty. Export a small batch in your own market and count the populated cells before you commit a campaign to one of these fields.

Nine email columns, not one

The email group writes a single Email column — the best address we found. The separate all_emails group writes nine more, and they answer a different question: which mailbox should this message go to, and is there a person behind it?

ColumnContains
Individual emailAn address that belongs to a named person rather than a department — p.groth@… rather than info@…
Individual email first nameThe first name inferred from that address, where the pattern makes it unambiguous
Individual email last nameThe surname, on the same basis
Contact emailThe general enquiries mailbox — info@, contact@, post@
Sales emailThe sales or new-business mailbox
Marketing emailThe marketing mailbox
Finance emailAccounts, invoicing, billing
Administration emailAdmin, HR, office management
All emailsEvery address found for the business, as a JSON array, with the evidence for each one

The point of the split is that the right mailbox is not the same for every message. A demo request that lands in finance@ is deleted; an invoice query that lands in sales@ is forwarded twice and then lost. If you are running more than one kind of outreach from the same export, these eight columns let one file serve all of them without a manual sort.

And Individual email first name / last name are what make a first line addressed to a person possible from a spreadsheet. Where they are empty, they are empty — there is no inferred "Dear Business Owner" fallback written into the file, because a wrong name is worse than no name.

What is inside All emails

A JSON array, one object per address, in ranked order — so Email is always the first element's email. The keys are fixed:

[{"email": "p.groth@example.no",
  "domain": "example.no",
  "category": "individual",
  "pattern": "flast",
  "firstname": null, "lastname": "Groth", "gender": null,
  "mx_provider": "google",
  "is_webmail": false, "is_disposable": false, "has_mx": true,
  "sources": ["https://example.no/kontakt"]}]

category is what drives the role columns above: individual, info-contact, sales, marketing, finance, administration — plus technical and unknown, which have no column of their own and appear only inside the array. Where two addresses share a category, the first one wins the column.

sources is the honest part: the list of URLs the address was actually found on. That is per-address provenance, and it is what lets you answer "where did you get this" for a specific mailbox rather than for the row as a whole. See your lawful basis.

We do not generate addresses from a pattern

pattern describes an address we found; it is not licence to construct firstname.lastname@domain for a business where we found nothing. A guessed address bounces, damages your sending reputation, and was never published by anybody. Empty stays empty — why a listing has no email.

Six contact-page columns

Contact page 1 through Contact page 5 hold up to five URLs on the business's site that look like contact pages, and All contact pages holds the same list as a JSON array. Multilingual sites are the common case for more than one: /en/contact and /no/kontakt are two rows of the same reality.

These matter most when Email is empty. A business with a contact form and no published address is not unreachable — it is reachable through a form, and the URL is right there in the file. Pair the Has a contact page filter with an empty Email and you have a clean list of "reachable, but not by mail merge".

Realistically: page 1 is the one that is usually populated, page 2 sometimes, and pages 3 to 5 rarely. They exist because the header contract has five of them, not because five is a typical number.

Website title, meta and language

ColumnContainsWhy you would use it
Website titleThe <title> of the home pageHow the business describes itself in its own words — far better copy for a personalised first line than a category name
Website meta descriptionThe meta descriptionThe same, in a sentence
Website meta imageThe Open Graph image URLA logo or storefront photo, if you are building a visual list
Website meta generatorThe generator tag, e.g. WordPress 6.4.8The single most direct signal of what a site is built on, and often of how old it is
Website langThe declared page language: no, nb, enWhich language to write in. Do not infer it from the country.

Website technologies and ad pixels

Two JSON arrays of what was detected on the site:

Website technologies  ["Nginx", "WordPress", "PHP", "MySQL", "reCAPTCHA"]
Website ad pixels     ["Google Tag Manager", "Facebook Ads"]

This is qualification data. If you sell Shopify apps, a list of businesses whose sites report Shopify is a different proposition from a list of businesses in a category. If you sell advertising services, Website ad pixels splits your market cleanly in two: the businesses already spending on ads, and the businesses not yet. Both are good lists; they need completely different opening lines.

Two matching filters narrow on this before you export — Technology contains and Ad pixel contains, both free text, plus a plain Runs advertising pixels flag. See the filters.

Absence of a technology is not evidence of absence

These arrays list what was detected on the pages we read. A tool that only loads on a checkout page, or behind a consent banner, may be in use and not in the array. Treat a hit as a strong signal and a miss as no signal, not as a negative one.

Reading the JSON columns without pain

  • An empty array is written as an empty cell, not as []. Check for emptiness before you parse, or your parser will throw on the majority of rows.
  • Take the XLSX or JSON download if you are going to work with these by hand. In CSV they are long quoted strings in a tab-delimited file, which is correct and unpleasant — choosing a format.
  • The singular column is always the first element of its matching array, so you never need to parse the array just to get the primary value.

Updated on:

Was this article helpful?

Related articles