Move creative brief attachments from Airtable to Cloudinary

When your team drops a file into an Airtable creative brief row, we upload it to Cloudinary, tag it by campaign, and Slack the link to the owner.

Agentic Task
CloudinaryAirtableSlack BotMarketingOperationsData SyncNotifications & Alerts
PromptCreate

Watch our Airtable Creative Briefs base and, whenever a row shows up (or is updated) with an attachment but no Cloudinary link yet, move that file onto our CDN so the marketing site can serve it from Cloudinary instead of the Airtable attachment URL.

Trigger: poll Airtable using new_or_updated_record on the Creative Briefs table, filtered to rows that have an attachment but where the Cloudinary URL cell is still empty.

For each triggering row, first call Airtable Get Record to pull the current attachment URL, the campaign name, the asset type, and the campaign owner (name or Slack handle). Airtable attachment URLs are short-lived, so the agent should treat the URL as ephemeral: fetch the bytes and hand them to Cloudinary immediately in the same run, never persist the Airtable URL anywhere downstream.

Next, use Cloudinary Upload Asset to push the file into a folder named after the campaign (for example campaigns/<campaign-slug>). Let Cloudinary infer the resource_type from the file (image, video, or raw). Capture the returned public_id and secure_url.

Then call Cloudinary Manage Tags with command=add to apply two tags to the new asset: the campaign name and the asset type (image, video, or raw). This is what lets the marketing site filter Cloudinary by campaign later.

Once tagging succeeds, call Airtable Update Record on the same row to write the Cloudinary secure_url back into the row's CDN URL column so the marketing site can pick it up.

Finish by using Slack (bot) Send a Message to ping the campaign owner (DM them, or post in the campaign's shared channel if that's how the team runs) with a short one-line note that the asset is now live on the CDN, plus the Cloudinary secure_url as a preview link so they can click through to confirm.

If any step fails (upload rejected, tag call errors, Airtable write fails), skip the Slack ping for that row and surface the error clearly so we can retry — don't leave a row half-updated with a Slack notification but no CDN link written back.

What does this prompt do?

  • Watches the Creative Briefs table in Airtable for new or updated rows that have an attachment but no CDN link yet
  • Uploads each attachment to your Cloudinary account, dropped into a folder named after the campaign
  • Tags each asset with the campaign name and asset type so it is easy to find later
  • Writes the Cloudinary delivery link back to the Airtable row and pings the campaign owner in Slack with a preview

What do I need to use this?

  • An Airtable base with a Creative Briefs table that has an attachment column, a campaign column, and a column to receive the Cloudinary link
  • A Cloudinary account you can upload assets into
  • A Slack workspace where the bot can post to the campaign owner

How can I customize it?

  • Change which Airtable base or table the workflow watches, and which columns count as the attachment, campaign, and owner
  • Adjust the Cloudinary folder pattern, for example campaign name, quarter, or client and campaign together
  • Point the Slack ping at the campaign owner directly or at a shared channel like #creative-drops

FAQs

Will this work on any Airtable plan?
Yes. As long as you can connect your Airtable account and add a column to receive the Cloudinary link, any Airtable tier works. The workflow only needs read and write access on the Creative Briefs table.
How fast will a new attachment show up on the CDN?
The workflow checks Airtable for new and updated rows every few minutes, so a fresh attachment typically lands on Cloudinary within about five minutes of hitting Airtable.
Airtable attachment links expire. Is that a problem?
No. The workflow grabs the file the moment the row is picked up and hands it straight to Cloudinary, so the short-lived Airtable link is never stored anywhere long term.
What if someone swaps the attachment later?
The workflow fires again when the row is updated. Clear the Cloudinary link cell before swapping the file and it will re-upload the new one, retag it, and post a fresh link.
Can I use my existing Cloudinary folders and tags?
Yes. The folder structure and the tag names are fully in your control. Many teams use a campaign folder plus tags for channel, region, or version so the marketing site can filter assets exactly the way it needs.

Related templates

A brand asset library your marketing team actually searches

Every logo, photo, video cut and ad export in one searchable grid, with previews, campaign tags and rights expiry dates at a glance.

General Input Storage
General Input Database
JigsawStack
+1
App
Turn Mailjet email clicks into ranked HubSpot follow-ups

Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.

Mailjet
HubSpot
Slack Bot
Agentic Task
Clean out the Looker dashboards and Looks nobody opens

One board showing every dashboard and Look with its folder, owner and favorite count, so you can find dead content and retire it safely.

Looker
Slack Bot
App
LiveKit live operations console for room moderation

Watch every live room on one screen, remove disruptive guests, start recordings and end stuck sessions without anyone opening a terminal.

LiveKit
Slack Bot
General Input Database
App
Wake up dormant Keap leads with a researched reason

Every Monday we find leads who never bought, research a real reason to reach out, and send a short personal email instead of another check in.

Keap
Slack Bot
Agentic Task
LiveChat coverage board for planning next week's shifts

See the exact hours your chat queue backs up and customers give up waiting, then plan next week's shifts before it happens again.

LiveChat
Slack Bot
General Input Database
App

Stop hand-copying creative files into your CDN.

Let your Airtable brief stay the single source of truth and let this workflow keep Cloudinary in sync for you.