Get contacts listed across for your CRM
Turn a one-row-per-contact list into one row per company, with each contact numbered across. Built for CRM imports that want contacts side by side.
By Operelio team · Updated October 8, 2026
On this page5
The problem: your CRM wants one row per company
Most contact exports are long: one row per contact, with the company name repeated on every row. Fifty contacts at the same company means fifty rows. That's the right shape for most tools, but some CRM import templates want the opposite: one row per company, with the contacts listed across as numbered columns like Contact 1 name, Contact 1 phone, Contact 2 name, Contact 2 phone.
Rebuilding that layout by hand means sorting by company, copying each contact's details into new columns, and keeping track of which contact goes in which slot. For a few companies it's tedious. For a few hundred it's an afternoon, and one missed paste puts a contact on the wrong company's row.
The Group across mode on the Transpose / Unpivot tool builds this layout in one run.
How Group across works
You pick two things. Group by is the column whose repeated values define a group; every row that shares a value lands on the same output row. Numbered across, in this order, holds the fields that vary per row, like the contact's name, phone, and email. Each row in a group becomes one numbered set in the output, in the order you picked the fields.
Nothing about the mode is specific to contacts. Group by an order number to put line items across. Group by a student to put test scores across. Group by a property to put tenants across. The example below uses contacts because CRM imports are the most common reason to need this shape.
Columns that are neither the Group by column nor numbered across (a Website or Industry column that's the same on every row of a company) come along from each group's first row while "Bring the other columns along" is on, as it is to start with. Turn it off if you only want the Group by column and the numbered sets.
| Before: one row per contact | After: one row per company |
|---|---|
| Company · Contact name · Phone | Company · Contact name 1 · Phone 1 · Contact name 2 · Phone 2 |
| Meridian · David Garcia · +44 20 7946 0101 | Meridian · David Garcia · +44 20 7946 0101 · Wei Chen · +44 20 7946 0102 |
| Meridian · Wei Chen · +44 20 7946 0102 | Lumen Labs · Karen Wilson · +44 20 7946 0103 · (blank) · (blank) |
| Lumen Labs · Karen Wilson · +44 20 7946 0103 |
How to do it
Six steps from a long contact list to a CRM-ready layout.
Open the Transpose / Unpivot tool and upload your file
Drag and drop your CSV or Excel contact list, or pick one from your recent files.
Pick Group across
Under "What to do", it's the third choice, next to Transpose and Unpivot.
Pick the column to group by
The column whose repeated values define a group. For a contact list, that's the Company column. One output row per distinct value; the line under it says how many that is.
Pick the columns to number across, in order
The fields that repeat per contact: name, phone, email. Each one is numbered by the order you add it, and that is the order inside each numbered set, so adding Name then Phone produces Name 1, Phone 1, Name 2, Phone 2.
Decide what the other columns do
Leave "Bring the other columns along" on to bring the remaining columns along from each company's first row, or turn it off to keep only the company column and the numbered sets.
Check the preview, then run
The preview shows the file the run will write, one row per company, and the run bar shows the rows and columns before and after. A note under the settings says if any group is over the cap or any company cell is blank. Click Group data across, then download the result from the results page.
Which contact becomes contact 1, and other rules
The mode is deterministic, so the same file always produces the same output. Companies appear in the order they first show up in your file, not alphabetically. Within a company, contacts number in file order: the first row in the file for that company becomes contact 1, the next becomes contact 2, and so on. If contact 1 should be the primary contact, sort your file that way before running.
Sets cap at 50 per row, so the output can't grow unreasonably wide. A company with more rows than that keeps its first 50. The page tells you how many rows will be left out before you run, and the results page says it again.
Rows with a blank company cell aren't dropped. They group together into one row with an empty company cell, and the page flags how many there are before you run, so you can fix the source data if that matters.
Groups with fewer contacts than the widest one get blank cells in their unused sets. The results page counts those padded cells, so blank cells in the output are expected, not a bug.
Frequently asked questions
Which contact becomes contact 1?
The first row in your file for that company. Contacts number in file order within each company, so sort your file before running if a particular contact should be first.
What happens if a company has more than 50 contacts?
The first 50 rows for that company are kept and the rest are left out. The results page tells you how many groups were over the cap and how many rows were not included.
What happens to rows with a blank company cell?
They group together into one output row with an empty company cell, and the results page flags how many rows landed there. Nothing is silently dropped.
Does this only work for contacts?
No. The mode is generic: group by any column and lay any repeating fields across. Order line items, student test scores, property tenants, anything where several rows share a key and you want one row per key.
Can I undo it?
Your original file is never modified, so you can always go back to it.
What plan do I need?
Group across runs on every plan, including Free, like the other two modes on the tool.
Ready to get started?
Upload a file and run your first transformation. Free, no credit card required.