The Creative Asset Tracker That Stopped Us From Delivering the Wrong Version to Clients
Track marketing agency deliverables, creative assets, and client approvals in Google Sheets. Stop emailing v7_FINAL_real_FINAL.pdf.
Last November, we sent a client the wrong version of their holiday campaign creative. Not a minor tweak — the wrong headline, the old color palette, a logo that had been retired six months ago. The client forwarded it to their CMO. The CMO forwarded it to our account lead with a one-line email: "Is this a joke?" It wasn't. It was a file called Holiday_Campaign_v4_FINAL_revised_KL_edits.pdf sitting in a subfolder three levels deep in a shared Drive, and someone grabbed v3 by mistake because the filenames were nearly identical. We'd been running a seven-person agency for four years at that point, and the truth is, this kind of thing happened more than we'd admit.
That incident cost us about two days of rework, a difficult apology call, and a chunk of trust we'd spent a year building. And the root cause wasn't a talent problem or a process problem in the traditional sense. It was a file problem. We had deliverables scattered across Google Drive folders, Slack DMs, Figma links, email attachments, and a project management tool that technically had an "attachments" field but that nobody used because it was three clicks too many. The tracker was in one place and the files were everywhere else.
Why Agency File Chaos Is Different From Everyone Else's File Chaos
Every business has file problems. But agencies have a specific breed. We produce a high volume of versioned creative assets — sometimes 15–30 individual files per client per month — and each file goes through multiple rounds of internal review and client approval. A single Instagram carousel might exist as a Figma draft, a PNG export for internal review, a revised PNG after the copywriter catches a typo, a PDF for client approval, a final PNG after the client requests a color change, and then a separate set of Story-sized versions. Multiply that by eight active clients and you've got hundreds of files in play at any given time.
The real killer is that the person who needs to find the file is often not the person who created it. The account manager needs to pull the approved version for a client call. The media buyer needs the final ad specs for upload. The designer who made it is on PTO. And nobody can figure out which of the four files named "FB_Ad_Final" is actually final, because Drive's "last modified" date got updated when someone moved the file to a different folder.
Project management tools like Asana, Monday, or ClickUp help with task flow, but they're terrible at being a source of truth for files. You can attach things, sure, but good luck finding the right attachment on a task that has 47 comments and six subtasks. We needed the tracker and the files to live in the same row — literally the same cell — so there was zero ambiguity about which file belonged to which deliverable.
The Spreadsheet Structure That Actually Holds Up
After the holiday campaign disaster, I spent a weekend rebuilding our tracking system in Google Sheets. Not because Sheets is the sexiest tool, but because it's the one tool every person on our team — designers, copywriters, account managers, freelancers — already knows how to use without a tutorial. Here's the column structure that's survived 14 months and over 1,200 deliverables:
- Client Name — dropdown, validated against a master client list on a separate tab
- Campaign / Project — free text but we enforce a naming convention: [Client Code]-[Campaign Name]-[Quarter] (e.g., ACM-SpringLaunch-Q2)
- Deliverable Name — the specific asset: "Instagram Carousel - Product Launch" or "Email Header - May Newsletter"
- Asset Type — dropdown: Static Image, Video, GIF, PDF, Copy Doc, Presentation
- Platform — dropdown: Instagram, Facebook, LinkedIn, Email, Website, Print, TikTok, YouTube
- Version — number field, starts at 1, increments with each revision
- Status — dropdown with conditional formatting: Draft → Internal Review → Client Review → Revisions → Approved → Delivered
- Assigned To — dropdown of team members
- Due Date — date field, with conditional formatting to flag anything within 48 hours or overdue
- Client Approval Date — blank until approved, used for reporting
- File — this is where the actual creative file lives, attached directly in the cell
- Notes — revision requests, feedback quotes from the client, links to reference material
The magic is in columns 6, 7, and 11 working together. When someone updates the version number, they drag a new file into the File column. The status moves from "Revisions" back to "Client Review." Everyone on the team can look at row 47 and know: this is version 3 of the Facebook ad, it's in client review, it's due Thursday, and the actual file is right there. No Drive spelunking required.
Attaching Files Directly to Rows (The Part That Changed Everything)
The whole system falls apart if "attach the file" means "paste a Google Drive link in the cell." We tried that. Within two weeks, half the links were broken because someone reorganized the Drive folder structure. A few pointed to files that had been deleted. And a Drive link in a cell looks exactly like every other Drive link in a cell — you can't tell if it's a 4MB PSD or a 200KB PNG without clicking it. Which defeats the purpose of a quick-reference tracker.
We use FileFox to drag files directly into cells. The designer finishes the carousel, exports it, and drops the PNG right into the row for that deliverable. When the client requests revisions, the designer drops the updated version into the same row (after archiving the old one). The account manager opens the sheet before a client call, sees the thumbnail in the cell, and knows immediately what they're looking at. No clicking through to Drive, no opening the wrong version, no "hey can you send me the latest file" Slack messages.
This is not a small quality-of-life improvement. It eliminated an entire category of mistakes. The version-mismatch problem — where someone grabs the wrong file because filenames are ambiguous — basically disappeared. If it's in the row, it's the current version. Period.
The Dashboard Tab That Runs Monday Standups
Once the tracker has clean data, you can build a dashboard tab that actually runs your week. Ours has four sections, all pulling from the main tracker with COUNTIFS and QUERY formulas:
- Due This Week — a filtered view of everything with a due date in the current week, sorted by date, showing client, deliverable, status, and assigned team member
- Overdue — anything past due date that isn't marked "Delivered" or "Approved" — this section uses conditional formatting to turn bright red, because it should hurt to look at
- In Client Review — a list of everything waiting on client feedback, with the date it was sent for review (so we can follow up if it's been more than 3 business days)
- Delivered This Month — a running count by client, used for monthly reporting and capacity planning
Every Monday at 9:15 AM, we screen-share this tab in our standup. It takes about eight minutes to review. Before this system, our standup involved opening Asana, then Drive, then Slack, then someone's email to find a client response, and the meeting ran 35 minutes. Now it's eight minutes because everything is visible in one sheet.
That formula pulls every deliverable due within the next 48 hours that hasn't been delivered or approved yet. Swap out the date math to get overdue items (change the <= to < and use TODAY() instead of TODAY()+2). It's not fancy, but it means nobody has to manually scan 200 rows to figure out what's hot.
Handling Client Approvals Without Losing the Thread
The approval workflow is where most agency tracking systems quietly fall apart. You send a proof to the client. They respond in email with feedback. Someone on your team copies the feedback into a task comment. The designer makes revisions and uploads a new file to... somewhere. The account manager sends the new version to the client, who responds in a different email thread. By version 3, nobody is 100% sure whether the last round of feedback was addressed, because the feedback lives in email and the file lives in Drive and the task lives in Asana and the revision notes live in a Slack thread that's been buried under 400 messages.
In our system, the approval flow is dead simple. When we send a proof to the client, the status changes to "Client Review" and we paste the key feedback into the Notes column — not a link to the email, the actual feedback, quoted. When revisions come back, we update the version number, drop the new file in, and change the status to "Revisions → Client Review." The Notes column gets appended: "v2 feedback: change headline font size, swap hero image. v3 feedback: approved with minor color tweak to CTA button."
Is this elegant? No. Is it a beautifully designed approval workflow with automated notifications and digital signatures? Absolutely not. Does it work? It hasn't failed us in 14 months. The entire approval history — what the client said, when they said it, and what version it applied to — is visible in one row. When a client calls three months later and says "we never approved that headline," we can pull up the row and read back their exact feedback. That's saved us from at least two scope-creep disputes.
Monthly Reporting Without Spending a Day on It
Every agency bills differently — retainer, project-based, hourly — but almost every agency has to produce some kind of monthly report showing the client what was delivered. This used to take our account managers 2–3 hours per client per month. They'd dig through Drive folders, compile a list of deliverables, take screenshots, format everything into a Google Slides deck, and pray they didn't miss anything.
Now they filter the tracker by client and by month (using the Client Approval Date column), and they've got a complete list of every deliverable, the platform it was for, when it was approved, and the file itself. The whole monthly report assembly takes about 30 minutes per client. For eight clients, that's 4 hours saved per month across the team — or roughly $400–600 in billable time we were previously lighting on fire.
We also use COUNTIFS on a reporting tab to track deliverable volume by client, by platform, and by asset type. This lets us spot trends: if one client is getting 40% more deliverables than their retainer covers, we know it's time for a scope conversation before we're three months into free work.
That gives you the total delivered assets for Acme Corp in January 2025. Drop that into a summary table for each client and each month, and you've got a capacity dashboard that takes five minutes to update instead of an afternoon of mental math.
The Hardest Part: Getting Your Team to Actually Use It
I'll be honest — the first two weeks were rough. Our senior designer kept saving files to her local desktop "just in case." One of our copywriters would update the status but forget to attach the file. The account team would create new rows with slightly different column formatting. The system is only as good as the people using it, and people default to their old habits unless you make the new habit easier than the old one.
What worked for us: we made the tracker the only place we discuss deliverables in standup. If it's not in the tracker, it doesn't exist for the purposes of the Monday meeting. That created social pressure — nobody wants to be the person who says "oh, I finished that but forgot to log it." Within three weeks, logging became automatic. Within six weeks, people started complaining when a row was missing information, which is the best sign that the system has taken hold.
We also use data validation on almost every column to prevent the "creative spelling" problem — where one person types "In Review" and another types "Client review" and a third types "waiting on client" and your COUNTIFS return zero because nothing matches. Dropdowns aren't glamorous, but they're the difference between a tracker that works and a tracker that slowly fills with garbage.
Start Here: The One Thing to Do This Week
If you take one thing from this post, it's this: stop separating your deliverable tracker from your deliverable files. Every system where the list of work lives in one tool and the actual files live in another tool will eventually break, because humans are bad at maintaining links between two systems. The file needs to live in the row. When you look at a deliverable, you should be able to see it — not click through to it, not search Drive for it, not Slack someone to send it.
Open a new Google Sheet today. Build the core columns I listed above. Pick your three most active clients and backfill their current deliverables. Attach the actual files to the rows. Use it in your next standup. You'll know within one week whether it's working — and I'd bet the cost of the retainer you're undercharging for that it will.
Frequently Asked Questions
How do I track multiple versions of a creative asset in Google Sheets without cluttering the tracker?
Keep only the current version on your main tracker tab. When a new version is created, copy the old row to an Archive tab before updating the version number and swapping in the new file. This keeps your main view clean while preserving the full history for disputes or rollbacks.
What's the best way to organize Google Drive folders for a marketing agency?
Use a structure like Client > Year > Campaign > Asset Type. But honestly, the folder structure matters less than having a tracker that points to the right file. We've seen agencies with pristine Drive structures still grab the wrong version because the tracker was disconnected from the files. Attach files directly to tracker rows and the folder structure becomes a backup, not the primary navigation.
Can Google Sheets handle the volume of deliverables a busy marketing agency produces?
Yes, for most small to mid-size agencies (2–15 people). We track 1,200+ deliverables per year across eight clients in a single workbook without performance issues. If you're approaching 5,000+ rows, consider splitting by quarter or by client. Google Sheets starts to slow around 10,000 rows with heavy formula use.
How do I get my creative team to actually update the deliverable tracker?
Make the tracker the only source of truth for your standup or weekly review — if a deliverable isn't logged, it doesn't get discussed. Social accountability works faster than any policy document. Also, keep the logging process under 30 seconds per deliverable: fill in the dropdown fields, drag the file in, done.
Should I use a project management tool like Asana or Monday instead of Google Sheets for agency deliverable tracking?
PM tools are great for task workflow and team collaboration, but most are weak at file-level version tracking. Many agencies use both — a PM tool for task flow and a Google Sheets tracker for the file-level detail. If you're a smaller team and want to consolidate, Sheets with file attachments can replace both, especially if your PM tool's attachment features aren't being used consistently.