Variable Data in InDesign CS4 – mass mail or anything!

Purpose and Usage

What is variable data? Have you ever had a client ask you to create name tags with job titles underneath each name? Or how about taking an excel spreadsheet with names and addresses and put them onto a postcard you just designed? This would be a major pain, but not any more. What you will learn from this short tutorial will save you DAYS of tedious work.

Step 1: Content creation

Sample File

You’ll need to start with an excel spreadsheet that contains all of the data you want to “place” into your project. Make sure each record is on a different line, and records with multiple data are on the same row.

For my example I will be using dates formatted in full text and the corresponding value is the day of the week. What I want to accomplish is to have all of the records be dropped into specific, formatted text boxes in InDesign and exported to a multiple page PDF to send off to the printer.

Once you are certain that you have all of the correct information in your table, export it as a CSV (Comma separated file) or as a .txt tab deliminated file. You can find these by doing “Save as…” and then in the file type dropdown box, choose one of the two. You cannot have multiple “sheets”, so be sure to delete them or move them to a new excel file and re-export them.

Step 2: Project Creation

Use character styles!

Create a new document in InDesign (or download the sample file below). Do whatever formatting for the postcard or flyer or whatever. Be sure to use character styles for easy editing later.

I made simple document to be used as blank daily logs. I want to take all of the dates from the excel spreadsheet and have indesign make more pages using the data. But adding all those pages would make my document unnecessarily large. So instead, I will tell it to recognize that there are multiple data records and export individual pages to PDF instead.

Sample document

Next, import the data into your InDesign document:
If your “Data Merge” window is not open, go to “window > automation > data merge” to open it

Open the Data Merge Window

Next, we need to link to the .csv or .txt file we created in the first step

Click “Select Data Source…”

It will automatically detect the columns and data, and display the first records. In my example it shows the first day of the year. The next step is to replace the content in our file with the “record” data. The easiest way to do this is to delete the data from the text field, and then click and drag the record into the box. It will be formatted with the character or paragraph style and have “<<” around it “>>”. This means that value is linked to that record. Sweet.

Click and drag to blank text box

You’ll now notice that the “Preview” button is selectable. Click it and then click the next button to view the next record. From the panel menu (underneath the close “x”) you can export to PDF or have it create a new document with as many pages as needed to display all the dates. There are many more customizable options using Data Merge, but they are not in the scope of this short tutorial. This is just to get your feet wet!

As always, please feel free to leave a comment if you found this useful or have any questions.

Download Sample Files

Data Merge Sample


  1. Jade says:

    Thanks for the clear instructions and the very helpful sample file. I normally use a printer to handle variable data, but I need to generate name-badges in-house for a conference, and this will make my job a lot easier.

  2. Daniel says:

    This is great, thanks !
    I just made a test with 10 records (from a BIG excel file) a the document was 56Mb when it went to the Fieri (printing on a Bizbub 6500).
    What will happend when I send a 400 or 500 name file, (instead of 10) ?
    Will that create a monster file over 1 Tb ?

  3. admin says:

    Generally speaking, no it shouldn’t unless there is a bunch of stuff needing to be ripped (color, ps commands) or the page size is large.
    I’ve always thought RIPs should have a feature where they can detect similar image areas on multiple page documents and reuse the pre-ripped data. PDF’s have similar file-size saving techniques, why not RIP’s?

    If 10 records = 56mb, 500 = 2.8Gb. 2.8Gb is certainly feasible, but will take some time depending on how old your Fiery is.

    I’m able to keep ripping to a minimum by imprinting black only on offset printed pieces. Also helps keep costs down.
    Hope this helps, best of luck.

  4. This awesome, thank you!

  5. Tropigal says:

    Much more helpful than the Adobe website. Thanks for putting it up there.

  6. Jill McGeorge says:

    I used this working in pre-press and had the same issue with file size… when my indesign document was 250 pages or more – I just sent a certain batch of pages to the rip/printer – say, pgs 1-25, then pgs 26-50 then just kept track and it was able to handle it all then! – no matter the size.

  7. Neuro says:

    This is great. Thanks a lot for the tutorial. I just made 60+ Business cards with it. You probably saved me a day of work!

  8. I’m a designer at a marketing company that prints digital with variable data. Client wanted variable data to start a second column after 8 rows in the first column are filled. Most data comes from Excel.

    I was wondering if there was a way to tell the InDesign tables to fill a second column after 8 rows are complete with the variable data. Is that possible?

    Programmers cannot code that so I must find a way for the variables to start a second row as InDesign tables. Any suggestions. Do you understand what I’m asking?

  9. admin says:

    In CS5, my most recent upgrade, does not have this feature. I dont know of any way to “tell” indesign that when it has finished reading from column 1 8 rows down then move to next column in place of the link to column 1.

    I think the only way to do this would be to open the document in excel and manually (or simple macro) move the data into one large column. Or run the PDF export for 8 records then replace the link to the next column and run export again for 8 records. Then combine using acrobat.

  10. Kent Martin (Philippines) says:

    Hi can you also give the detailed instructions on how to use the variable data printing using Indesign CS5 and what is the difference from the process using the old one CS4.

    I’m looking forward for your response regarding this matter Sir Admin!

    You been very helpful with the above tutorial.

    Thank you very much!

  11. Emil says:

    Thanks a thousand times man!

    This little tutorial saved me about 10 hours of work. I going to print 250 personal name tags and this made the process a little bit easier.

  12. Sanjeet Rao (Fiji) says:

    Could someone let me know if I could flow the data to the second page just in case if the first page gets full for a single record in Adobe Indesign CS4. This would mean that some records will fit on one page and some on two pages but in one merged document. Can anyone help me on this issue.

  13. Kym says:

    This is great! You’ve saved me tons of hours of work. Can you tell me how to import an image? I need to add people’s headshots to different mail pieces. Thank you!!

  14. Terra says:

    First thing… this was VERY helpful! Worked perfectly 🙂

    Im not sure if I will be describing this right…..My question is that I am doing raffle tickets 3 up on a 8.5×11. I set up the content boxes in the correct area in the master page, but I want the numbering to start flowing down the first page, to the other two tickets then to the following pages.

    I know that if I put the “data” in the following tickets on the master page it will flow wrong on the following pages….. Is this possible? Or do I need to make each ticket on a new page for it to flow right. then place them 3Up manually?

    Sorry if this is confusing and THANKS a million!

  15. Monika says:

    Great thank you, I just needed to print 140 personalized invites, many thanks for your instructions.

  16. Patricia says:

    so glad you have this information : so easy to understand – fabulous! thanks.

  17. allie says:

    Thanks! Super helpful!

  18. program make says:

    There’s definately a lot to find out about this topic.
    I really like all the points you’ve made.

  19. Debbie says:

    we have an indesign file with various documents on, each one needing to be numbered differently. Do we need each document on a separate page?

  20. alana says:

    really great tutorial but I’m doing invitations and so i have 2UP per page. It appears to be copying the same guest name on both invitations on the page then changing to the next name on the next page… hope that makes sense… how do I get 1 name per invite? so 2 guest names per page?

  21. admin says:

    Open up your CSV file, count the total number of guest names.
    Put half of the names, addresses, etc in a different column with a header like “Name2”, “Addr2”, Ect

    On your master template in InDesign, select the second area for the names and choose the “Name2”, “Addr2”, ect

    Effectively, this works for a 2up scenario until Data Merge works with simple additive conditions. One of these versions of InDesign ought to include the ability to add simple modifiers like “Name+1″…but until then we have to use these workarounds. Cheers!

  22. besi says:

    What i do not understood is in reality how you’re now not actually much more well-appreciated than you might be now.
    You are very intelligent. You understand thus considerably in relation to this subject, made
    me in my opinion imagine it from a lot of various
    angles. Its like men and women don’t seem to be fascinated unless it is something to accomplish with Lady gaga!
    Your personal stuffs outstanding. At all times handle it up!

  23. Rijo John says:

    Thank you so much. This reduced my working time from 8hrs to 5 mins 😀

Leave a Comment