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.
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.
Additional information
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
Frequently asked questions
Will this work on any Airtable plan?
How fast will a new attachment show up on the CDN?
Airtable attachment links expire. Is that a problem?
What if someone swaps the attachment later?
Can I use my existing Cloudinary folders and tags?
Related templates
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.