Part two is the spreadsheet, and the spreadsheet is where imports fail. The validator compares your header row against a fixed list and rejects the file if anything is missing or if anything extra is present, so the exact columns matter more than the content in them.
The two header rows, copied from the source
There are exactly two, one per importer, and the sample files shipped inside the module use them verbatim:
- Nodes:
csv_image_url, csv_node_title, csv_image_alt, csv_image_title, csv_node_tag, csv_node_body - Paragraphs:
csv_image_url, csv_image_alt, csv_image_title, csv_target_title, csv_target_tag, csv_target_body
Four columns are shared; the node file swaps in a node title and node tag, the paragraph file a target title and target tag. Nothing else is accepted on either side.
Filling the cells so the import survives
- Image column — the bare file name,
slide1.jpg, never a path. The file must already be registered from part one. - Tags — several terms in one cell separated by a pipe, as in
Homepage|Featured. Missing terms are created for you. - Body — HTML is allowed. Wrap the whole cell in double quotes and double any quote inside it.
- Empty cells are fine. Leave the image column blank for a text-only row and leave the folder blank at import time.
- Save as UTF-8 without a BOM, comma delimited. A stray BOM corrupts the first header and the file is refused.
Start from the samples
Four ready-made files ship with the module — with and without images, for nodes and for paragraphs. Opening one beats typing a header row from memory, because a single misspelt column name is the difference between an import and an error message.
Next step: check the requirements on the Paragraphs Bundles Import module page, then move to part three and run your first node import.
Planning something larger than a single feature — a rebuild, or a move off an older Drupal? Drupal architecture services, or request a quote.