Opens in a new tab

Personalized Video for Every Customer From a CRM Export

Published October 29, 2026

Yes, a CRM export can drive a personalized video for every customer, but not the file as it comes out of the CRM. You make a working copy with only the columns the video needs, rename them so the video software can read them, add a column for each file’s name, and keep the CRM’s record ID in every row so each finished video can find its way back to the right customer.

That last part is the one people forget. Making five hundred videos is the easy half. Knowing which of the five hundred belongs to which customer, and getting a link to it back into the record your email or sales team uses, is where these projects quietly fall apart. This article starts from the export file itself and walks through it in order: what format to export, how to clean and map the columns, what personal data should never leave the CRM in the first place, and how each video gets delivered back.

Start with the file: what to export and what Templater can read

A CRM export is usually a spreadsheet with dozens of columns. Contact ID, first name, last name, email, phone, company, title, owner, lifecycle stage, created date, last activity date, three address lines, a handful of custom fields someone added two years ago, and tags. Most of it has nothing to do with a video. Before you think about the video at all, look at what the file is and where it is going.

Templater, our After Effects plugin, reads data from a short list of places. A native Google Sheets document. A tab-separated file exported from Excel, Apple Numbers or Google Sheets. A plain text file with JSON in it. A JSON feed at a URL. Or a campaign in QUE, our JSON-based data manager. Each row, or each object in a JSON array, becomes one render job. Each column, or each JSON key, feeds one dynamic layer in the template, so a cell can hold text, a URL, an image file path or a hex color value.

Two things on that list trip people up with CRM files. Templater cannot read an Excel file directly. If your CRM hands you a workbook, export it to a tab-delimited file first, or put it in Google Sheets. And Templater maps to a single worksheet inside one data source, so if your export arrives as three tabs, contacts, companies and deals, one tab has to become the one that drives the video. Do that join in the spreadsheet before Templater ever sees it.

Encoding matters more than people expect. Our documentation says tab-separated and JSON text files must be UTF-8 so international characters read correctly. A customer named with an accented letter, or written in a non-Latin script, will look wrong on screen if the export used a different encoding. There is also a preference in Templater for tab-delimited files exported from Excel or Numbers. If the file came from one of those programs and the box is not checked, or the box is checked when it did not, stray characters appear in your text layers. Check it once and write down what you chose.

QUE takes a different route that suits CRM files well. Its dashboard has a Batch Import that accepts a JSON file with a single array of objects, a Microsoft Excel file with a header row, or a CSV or TSV file. You pick the satellite that will render the jobs, which is the machine running After Effects and Templater, pick the rigged template, which QUE calls an Autograf, and upload. Each row becomes a job in a campaign. The same import is available as an API endpoint if a developer wants to automate it. If your team lives in Excel and the CRM exports CSV, QUE can take the file closer to how it arrives, though the column cleanup below still applies. Our QUE page explains the plans.

So the first decision is simple and has consequences. A one-time campaign of a few hundred customers is often easiest as a Google Sheet or a tab-separated file. A recurring campaign, or one where new customers keep arriving, is a better fit for QUE, because it can take batches and API calls rather than a person pasting a fresh export every week.

Cleaning and mapping the columns, row by row

Never work on the raw export. Make a working copy and treat the original as a record of what the CRM said on that day. Then cut. The working copy should hold only the fields the video shows, the fields that decide which version a customer gets, the record ID, and the reserved columns Templater uses. Everything else stays behind.

Which fields deserve a place on screen is its own question, and a good one. We wrote about it in which data fields actually change viewer behavior in a personalized video, and the short version is that a first name and one fact that changes the message usually beat eight fields that do not. This article assumes you have made that call. The job now is making the columns you kept behave.

Rename the headers so they map

CRM headers are written for people. First Name, Account_Owner, 2025 Spend. Google Sheets headers that start with a numeral, contain spaces, contain the _ character or contain a dollar sign do not map to layers in Templater, so the layer simply does not update when you preview. Rename each header you keep to something short and plain, like firstname or plan, and give the matching layer in After Effects the same name. A header that does not map is the most common reason a first preview shows the designer’s placeholder text instead of a customer’s name.

Watch for collisions with the names Templater reserves. The list is id, target, output, aep, render-status, bot, module and render-settings. They are case-sensitive, and using one as a dynamic layer name can cause an error. CRM exports often carry an ID column and sometimes a column called target or status for their own reasons. Rename the CRM’s own column if it means something else, so Templater never reads your sales target as the name of a composition. We go deeper on this in what happens when a data column name matches a reserved Templater name.

Put the CRM record ID to work

The one CRM field that should always come along is the record ID. Copy it into a column named id. Templater uses that value to label each output, appending it to the job prefix and the target composition name. Better still, build an output column, which sets the file name for each row and overrides id for naming. Our documentation suggests building it with your spreadsheet’s concatenate function, so a formula can join the record ID and the first name into something like 48213-maria. Keep periods out of those names, because the documentation warns they cause After Effects output errors. If you prepend a folder and a slash, each file lands in a sub-folder, which is handy when one export feeds two campaigns. The detail is in our post on custom output file names.

Here is why this matters so much. When the files come back, the only thing connecting a video to a customer is that name. A file called 48213-maria can be matched to record 48213 by anyone, by a formula, or by an import. A file called Comp1_00417 can be matched to nobody without opening it.

Fix the values that break a video

Next, go through the columns you kept and look for the rows that will embarrass you. Every CRM has them.

Blank first names are the classic. A video that opens with “Hi ,” is worse than no personalization at all. Decide what a blank becomes before you render. You can fill blanks with a neutral word in the working copy, or route those rows to a version of the template that does not use the name at all with a target column. Names typed in all capitals or all lower case are the next problem. Fix casing in the working copy with a spreadsheet formula, not by hand, and then read the result, because formulas get surnames like McDonald wrong.

Long values need the template to cooperate. A company name that runs to six words will overflow a box designed for two. Templater’s layout rules resize and reposition dynamic layers relative to the composition and to each other, so the designer can make a long name shrink or push its neighbors over instead of spilling off the frame. A single text layer takes one font, size, weight and style, so if you want the customer’s name bold inside a sentence, that is two layers placed side by side. If your customers write in different scripts, Templater shows characters from any language as long as the installed font has the glyphs, and it supports right-to-left text. Since Templater 3.4, a style column can also change the font per row, so a row in one script can get a font that draws it.

Images need a plan for when they are missing. If the video shows a company logo or a rep’s headshot from a URL or a file path, some rows will have nothing. In Templater Preferences you choose what happens when footage cannot be found: ask, find it yourself, skip the row, use a branded placeholder, or cancel. The documentation recommends the branded placeholder, and it has been the default since Templater 2.9.5. Also turn on the option that treats empty cells as faulty. Without it, Templater keeps the image from the previous row, which in a customer video means one company’s logo turning up in another company’s video.

Preview the ugly rows first

Before anything renders, sort the working copy so the worst rows are at the top. The longest name, the blank name, the missing logo, the accented surname, the company that is only initials. Templater’s manual preview steps through rows inside the composition and re-reads the data every time, so you see the row as it stands right now. Fix what breaks in the data, not in After Effects. Then run spot checks across a larger range. Templater Pro and Bot can export still frames or short clips from the merged compositions, which lets you scan a few hundred customers’ frames in minutes instead of watching videos. If you pay per output through QUE Meter, each spot check uses a credit, so keep the range sensible. For a broader list of what goes wrong in messy data, see our guide on field type mismatches between spreadsheet, JSON and URL feed sources.

Here is how it looks on a real kind of project. A software company wants a thank-you video for every customer who renewed this quarter. The CRM export has forty-one columns and about nine hundred rows. The marketer keeps five: the record ID, first name, company, the plan they renewed, and the account manager’s name. She renames them to plain headers, builds an output column from the record ID and first name, fills blank first names with “there”, and uses a target column to send customers on two different plans to two different compositions. She previews the twenty worst rows, fixes a dozen, and runs spot checks on everything. Only then does she render.

Privacy: decide what leaves the CRM before you export anything

A CRM export is a copy of your customers’ personal data sitting in a new place. The moment it leaves the CRM, it is outside whatever access controls the CRM gave you. So the privacy work happens before the export, not after.

The first rule is to export less. If the video uses a first name and a plan, the working file should not contain email addresses, phone numbers, street addresses or deal values. The fewer personal fields travel, the less there is to lose, and the shorter the conversation with whoever is responsible for data in your company. Some CRMs let you build an export view with only the columns you choose. Use it, rather than exporting everything and deleting columns afterward, so the extra data never lands on a laptop in the first place.

The second rule is to know where each copy lives. With a tab-separated file, the data sits on the machine running After Effects and Templater. With Google Sheets, it lives in a cloud document, and the sharing settings on that document are now part of your data handling, so share it with the people who need it and nobody else. With QUE, the data lives in your QUE account. QUE encrypts all data at rest using the AES-256-GCM specification, and offers Field Level Masking for scrambling sensitive demographic data. Projector, our rendering and distribution app, is installed on your own machine, and your video assets are never visible to another party, in transit or at rest. Those facts describe how data is handled. They do not decide whether you should use a given field in a video sent to a person. That is a question for your own policies and, where it applies, your counsel. We do not give legal advice, and nothing in the software settles it.

The third rule is about the videos themselves. A personalized video is personal data too. It carries a name, and often more. If you host the videos on a streaming service, think about who can open each one. Projector offers three privacy levels when it deploys to a service. Our documentation recommends owner-only as the best default, because it lets you play each video through and stage the campaign before release, and it advises against public links for personalized video. When you are ready, you change the privacy on the streaming service itself.

Finally, clean up. When the campaign is done, delete the working copies and any exports on local disks that you no longer need. A forgotten CSV of nine hundred customers in a downloads folder is exactly the kind of thing nobody notices until it matters.

Getting each video back to the right customer

Rendering is the middle of the job, not the end. Each finished file has to reach the person it was made for, and almost always through a tool your company already uses to reach them. The design goal is a row that ends up holding its own video link, next to the record ID, so that link can go back into the CRM or straight into an email platform.

There are two ways to get there. The first is Projector. It deploys finished videos to Vimeo, JW Player or Frame.io, can archive them to an S3 storage bucket you provide, and can make a poster image and a GIF clip for each one, which is useful when an email needs a thumbnail that already shows the customer’s name. When Projector finishes deploying, it writes information from the streaming service back into your data source, so the link to each person’s video sits in the same row as their name. Projector reads from Google Sheets or QUE. The Projector page covers what it does.

The second is to build the step yourself with Templater Bot’s event scripts. A shell script can run when a render finishes, upload the video wherever you host it, and write its URL back to the data source. Our FAQ describes exactly this, so email marketers can embed the right link for each person in their campaign, and notes that a script can also send an email or text when a video is uploaded. Event scripts need Templater Bot, and someone comfortable writing a script.

Either way, the last step is the same. Export the finished sheet with two columns, the record ID and the video link, and import it into a field on the matching CRM record, or hand it to your email platform as a merge field. Because the record ID came along from the start, the match is exact. Nobody has to guess whether a video named after “Maria” belongs to the Maria in Denver or the Maria in Leeds.

If customers keep arriving, a one-time export stops making sense. QUE has an API and a built-in Zapier integration that connects to more than 5,000 apps, so a new or updated record elsewhere can create a video job without anyone exporting a file. That is the point where this stops being a campaign and becomes a process. Our general guide on how to make hundreds of personalized videos from data covers the rendering and scaling side of that in more depth, including how editions and extra machines change the time a batch takes.

On timing, our FAQ is honest: render time depends on video length, resolution, hardware, how much of each frame changes and how heavy the effects are. Render one typical customer’s video on your production machine, time it, multiply by your row count, and you have a fair estimate for a single machine. Two machines running Templater Bot cut the total in half.

Who should do something else? If your CRM campaign is a few dozen videos once a year, building a template is more setup than the job needs. If nobody on your team works in After Effects and you have no plan to bring someone in, this approach depends on a person you do not have. And if the point of the video is a person talking to camera, a rendered motion graphics template is the wrong kind of video. Template automation is at its best when the design matters, the list is long, and you will run the same kind of campaign again.

For occasional campaigns there is a lighter path. QUE Meter runs from a free QUE account on a pay-as-you-go basis, and it is meant for campaigns that are sporadic, intermittent or experimental. The QUE free trial is limited to 50 jobs, and Templater has a 30-day free trial that is a fully featured Templater Bot, so you can take a real export, clean it, and render a real batch before you commit to anything.

The bottom line: the CRM export is raw material, not a data source. Cut it to the fields the video needs, rename the headers so they map, carry the record ID into every file name, decide what personal data travels before you export, and plan the return trip of each video link before you render the first one. Do that, and a list of customers becomes a list of videos you can actually send. Skip it, and you get a folder of beautiful files nobody can match to anyone.

These are the questions we hear most from teams holding a CRM export and wondering where to start.

Frequently Asked Questions

Can Templater read my CRM’s Excel or CSV export directly?

Templater cannot read an Excel file directly. Export it to a tab-delimited file saved as UTF-8, or put it in a Google Sheet. Templater also reads JSON files and JSON feeds. QUE, our JSON-based data manager, can import a Microsoft Excel file with a header row, a CSV or TSV file, or a JSON array through its Batch Import, turning each row into a job. Whichever route you choose, clean the columns first.

Why does my first preview show placeholder text instead of the customer’s name?

Usually the header does not map. In Google Sheets, headers that start with a numeral or contain spaces, the _ character or a dollar sign do not map to layers. Rename First Name to something like firstname and give the After Effects layer the same name. Also check that no column uses a reserved name such as id, target or output for something else, because those names are case-sensitive and can cause errors.

How do I match each finished video back to the right CRM record?

Carry the CRM record ID into every row. Put it in an id column, and build an output column that joins the ID with a first name, so each file is named for its record. When videos are uploaded, Projector or a Templater Bot event script can write each video link back into the same row. Then import the record ID and link into the CRM or your email platform.

Which customer data should I leave out of the export?

Anything the video does not show or use to choose a version. If the video uses a first name and a plan, leave out email addresses, phone numbers, street addresses and deal values. Build an export view with only those columns so the extra data never lands on a laptop. Whether you may use a particular field in a video is a question for your own policies and counsel, not something the software decides.

Where does the customer data live while the videos are made?

It depends on the data source. A tab-separated file stays on the machine running After Effects and Templater. A Google Sheet lives in the cloud under that document’s sharing settings. In QUE, data is encrypted at rest with AES-256-GCM, and Field Level Masking can scramble sensitive demographic fields. Projector is installed on your own machine, and your video assets are never visible to another party.

What happens to customers with a blank name or a missing logo?

Decide before you render. Fill blank names with a neutral word in the working copy, or send those rows to a version without the name using a target column. For missing images, choose the branded placeholder in Templater Preferences and turn on the option that treats empty cells as faulty. Otherwise Templater can carry the previous row’s image into the next customer’s video.

Do I need Templater Bot, or is Pro enough for a CRM campaign?

Pro renders a whole batch with one click, which is enough for a one-time export. Bot adds automatic watching of the data source and event scripts, which you need if a script should upload each video and write its link back, or if new customers keep arriving. For occasional campaigns, QUE Meter offers pay-as-you-go rendering from a free QUE account. The 30-day trial is a fully featured Bot.

Leave the first comment

Sign up

Stay up to date with Datclay's newsletter. We won't spam your inbox.

Newsletter Signup
Name
Name
First
Last

By submitting your email, you agree to our Terms and Privacy Policy. You can opt out at any time.