[{"data":1,"prerenderedAt":74},["ShallowReactive",2],{"help-article-uploading-and-tagging":3},{"data":4},{"title":5,"excerpt":6,"content":7,"help_category":8,"seo":11},"Uploading & Tagging Assets","Upload files, sync files already in storage, and tag and set status on each asset in m18t's Assets Manager — plus the guardrails on uploads and deletes.","\u003Cp>\u003Cstrong>What you&#39;ll learn\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>How to upload files and sync files that already exist in storage.\u003C\u002Fli>\n\u003Cli>How tags and status work on each asset, and why they matter downstream.\u003C\u002Fli>\n\u003Cli>The guardrails m18t puts on uploads and deletes.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>Why assets carry status and tags\u003C\u002Fh2>\n\u003Cp>Most media libraries treat a file as a dumb blob: a name and some bytes. m18t treats an asset as a first-class record. Every file you upload gets indexed in your own database with a brand, a status, optional tags, alt text, and a usage count. That extra structure is what lets you filter a thousand images down to &quot;approved logos for this brand&quot; in two clicks, and what stops you from deleting a file that three blog posts still reference.\u003C\u002Fp>\n\u003Cp>Assets draw from the same shared \u003Ca href=\"\u002Fhelp\u002Fthe-status-set\">status set\u003C\u002Fa> as content, emails, and everything else in m18t — \u003Ccode>planning\u003C\u002Fcode>, \u003Ccode>testing\u003C\u002Fcode>, \u003Ccode>production\u003C\u002Fcode>, \u003Ccode>deprecate\u003C\u002Fcode>, and the rest. The status is a label, not an enforced gate (any transition is allowed today), but two places do read it: a generated image arrives at \u003Ccode>deprecate\u003C\u002Fcode> and you promote it; and an asset must be at \u003Ccode>deprecate\u003C\u002Fcode> before m18t will let you delete it. Tags are brand-scoped labels shared with content and news sources — the same tag vocabulary, reused — so &quot;summer-campaign&quot; means one thing across your whole brand. See \u003Ca href=\"\u002Fhelp\u002Flinking-assets-to-content\">Linking Assets to Content\u003C\u002Fa> for how the usage count gets populated.\u003C\u002Fp>\n\u003Ch2>How to upload files\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Open \u003Cstrong>Assets Manager\u003C\u002Fstrong> (\u003Ccode>\u002Fstudio\u002Fassets-manager\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Upload\u003C\u002Fstrong> in the top bar, or drag files onto the drop zone in the main panel.\u003C\u002Fli>\n\u003Cli>In the upload dialog, pick a \u003Cstrong>Target Brand\u003C\u002Fstrong>. This is required — m18t will not file your upload under a brand you didn&#39;t choose. If your sidebar switcher is set to \u003Cstrong>All Brands\u003C\u002Fstrong>, the brand field starts empty and you must choose.\u003C\u002Fli>\n\u003Cli>Select one or more files. The per-file cap is 30 MB; files over the cap are dropped client-side with a notice naming each skipped file, so one oversize file can&#39;t fail the whole batch.\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Upload\u003C\u002Fstrong>. The files land in your \u003Ca href=\"\u002Fhelp\u002Fthe-workspace-media-hub\">workspace media hub\u003C\u002Fa> under the chosen brand and the \u003Ccode>assets\u003C\u002Fcode> namespace, and the storage meter in the top bar refreshes to reflect the new usage.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2>How to sync files already in storage\u003C\u002Fh2>\n\u003Cp>If files exist in your bucket but aren&#39;t indexed yet — for example after a migration — use \u003Cstrong>Sync Disk\u003C\u002Fstrong> (next to Upload). It scans your storage and creates database records for any files it finds that aren&#39;t already tracked, then reports how many new assets it added. This indexes existing files; it does not upload new ones.\u003C\u002Fp>\n\u003Ch2>How to tag and set status on an asset\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Click any asset to open its detail panel.\u003C\u002Fli>\n\u003Cli>Edit \u003Cstrong>Filename\u003C\u002Fstrong>, \u003Cstrong>Alternative Text\u003C\u002Fstrong> (used for SEO and accessibility), \u003Cstrong>Brand\u003C\u002Fstrong>, \u003Cstrong>Status\u003C\u002Fstrong>, and \u003Cstrong>Tags\u003C\u002Fstrong> there. Tags are a multi-select drawn from your brand&#39;s tag vocabulary.\u003C\u002Fli>\n\u003Cli>The panel shows an \u003Cstrong>Unsaved\u003C\u002Fstrong> marker when fields diverge from what you opened. Nothing is written until you click \u003Cstrong>Save Changes\u003C\u002Fstrong> — closing or cancelling discards edits, by design.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>You can also change status inline from the table&#39;s status dropdown without opening the panel.\u003C\u002Fp>\n\u003Ch2>Variations\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>Filtering.\u003C\u002Fstrong> The filter bar narrows by status, type (Images \u002F Videos \u002F Documents), and kind (the namespace). \u003Cstrong>Advanced Filters\u003C\u002Fstrong> adds a tag filter and a linkage filter (linked vs. unlinked), so you can find orphaned files fast.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Downloading.\u003C\u002Fstrong> The detail panel&#39;s \u003Cstrong>Download\u003C\u002Fstrong> button fetches the file through the authenticated, brand-scoped serve route — same auth path as every other call, so it works whether you&#39;re on cookie or token auth.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Deleting.\u003C\u002Fstrong> Deletion is two-gated: the asset must be at \u003Ccode>deprecate\u003C\u002Fcode> status, and it must not be linked anywhere. If it&#39;s still referenced, the server blocks the delete and tells you how many places use it. Set status to \u003Cstrong>Deprecate\u003C\u002Fstrong> first, remove the links, then delete.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Why is my upload asking me to pick a brand?\u003C\u002Fstrong>\nBecause m18t never guesses. When the sidebar is on All Brands, the upload dialog can&#39;t infer a target, so you choose one. This prevents files landing under the wrong brand.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>A file was skipped during upload — why?\u003C\u002Fstrong>\nIt was over the 30 MB per-file cap. m18t drops oversize files before sending so one bad file doesn&#39;t fail the batch, and names each skipped file in the notice.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why can&#39;t I delete this asset?\u003C\u002Fstrong>\nTwo reasons block deletion: the asset isn&#39;t at \u003Ccode>deprecate\u003C\u002Fcode> status, or it&#39;s still linked to content\u002Fartifacts. Deprecate it first, then remove any links. The delete dialog tells you which condition is in the way.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What does Sync Disk do?\u003C\u002Fstrong>\nIt indexes files that already exist in your storage bucket but have no database record — useful after a migration. It does not upload new files; use Upload for that.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Do tags carry across brands?\u003C\u002Fstrong>\nNo. Tags are brand-scoped. The same tag name belongs to one brand&#39;s vocabulary; switching brands shows that brand&#39;s tags. This keeps a label like &quot;campaign-2026&quot; unambiguous.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What&#39;s next\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Flinking-assets-to-content\">Linking Assets to Content\u003C\u002Fa> — attach assets to content and the publisher.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-workspace-media-hub\">The Workspace Media Hub\u003C\u002Fa> — where uploads physically land.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-status-set\">The Status Set\u003C\u002Fa> — the shared status vocabulary assets use.\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-graphics-generator\">The Graphics Generator\u003C\u002Fa> — generate images instead of uploading them.\u003C\u002Fli>\n\u003C\u002Ful>\n",{"slug":9,"title":10},"assets","Assets Manager",{"meta_title":12,"meta_description":6,"keywords":13,"canonical_url":14,"og_title":12,"og_description":6,"og_image":15,"robots":16,"json_ld":17},"Uploading & Tagging Assets | m18t Help","uploading assets, tagging, sync disk, asset status, target brand, file cap, deprecate delete, brand-scoped tags, m18t","https:\u002F\u002Fm18t.com\u002Fhelp\u002Fuploading-and-tagging","https:\u002F\u002Fm18t.com\u002Fog-default.png","index, follow",{"@context":18,"@graph":19},"https:\u002F\u002Fschema.org",[20,33,58],{"@type":21,"headline":5,"description":6,"articleSection":10,"inLanguage":22,"datePublished":23,"dateModified":23,"image":15,"author":24,"publisher":28,"mainEntityOfPage":31},"Article","en","2026-06-25",{"@type":25,"name":26,"url":27},"Organization","m18t","https:\u002F\u002Fm18t.com",{"@type":25,"name":26,"url":27,"logo":29},{"@type":30,"url":15},"ImageObject",{"@type":32,"@id":14},"WebPage",{"@type":34,"mainEntity":35},"FAQPage",[36,42,46,50,54],{"@type":37,"name":38,"acceptedAnswer":39},"Question","Why is my upload asking me to pick a brand?",{"@type":40,"text":41},"Answer","Because m18t never guesses. When the sidebar is on All Brands, the upload dialog can't infer a target, so you choose one. This prevents files landing under the wrong brand.",{"@type":37,"name":43,"acceptedAnswer":44},"A file was skipped during upload — why?",{"@type":40,"text":45},"It was over the 30 MB per-file cap. m18t drops oversize files before sending so one bad file doesn't fail the batch, and names each skipped file in the notice.",{"@type":37,"name":47,"acceptedAnswer":48},"Why can't I delete this asset?",{"@type":40,"text":49},"Two reasons block deletion: the asset isn't at deprecate status, or it's still linked to content\u002Fartifacts. Deprecate it first, then remove any links. The delete dialog tells you which condition is in the way.",{"@type":37,"name":51,"acceptedAnswer":52},"What does Sync Disk do?",{"@type":40,"text":53},"It indexes files that already exist in your storage bucket but have no database record — useful after a migration. It does not upload new files; use Upload for that.",{"@type":37,"name":55,"acceptedAnswer":56},"Do tags carry across brands?",{"@type":40,"text":57},"No. Tags are brand-scoped. The same tag name belongs to one brand's vocabulary; switching brands shows that brand's tags. This keeps a label like \"campaign-2026\" unambiguous.",{"@type":59,"itemListElement":60},"BreadcrumbList",[61,65,69,72],{"@type":62,"position":63,"name":64,"item":27},"ListItem",1,"Home",{"@type":62,"position":66,"name":67,"item":68},2,"Help","https:\u002F\u002Fm18t.com\u002Fhelp",{"@type":62,"position":70,"name":10,"item":71},3,"https:\u002F\u002Fm18t.com\u002Fhelp\u002Fcategories\u002Fassets",{"@type":62,"position":73,"name":5,"item":14},4,1786312172032]