Agency Workflow Guide
From Photoshop to Banner Ad in One Clean Pipeline
You already have campaign designs in Photoshop. This guide shows the recommended way to bring them into Canvosity so that every layer snaps into place, every size stays on-brand, and animating each element is effortless.
The short version
- Start with your existing Photoshop campaign — all the ad sizes should already be there as separate documents or artboards.
- For each size, split anything that needs to move, fade, or animate into its own layer.
- Export each layer as a file with the same dimensions as the ad (e.g. every 300×250 ad layer exports at 300×250 px).
- The bottom-most layer (the background) exports as JPEG. Every layer above it needs transparency, so use PNG or WebP.
- Drop all the files into Canvosity — layers stack in register, animation is a single click per element.
- Use identical filenames across every ad size (e.g.
headline.pngin both 300×250 and 728×90). Build animations once on one size, then right-click the ad and choose Sync animations to other sizes — Canvosity matches by filename and copies the timeline, click-tag URL, loop count, and hover effects across every size in one click.
Why this approach
Pixel-perfect alignment
Every exported layer is the full ad dimensions, so when you stack them in Canvosity they line up exactly as they did in Photoshop.
Animate anything, any time
Because each moving element is its own layer, you can drop an animation onto it in seconds — no re-exporting, no cutting up images later.
Small, network-friendly files
JPEG for the opaque background, PNG/WebP only where transparency is needed. Hits DV360 / CM360 k-weight budgets comfortably.
Start with the campaign you already have
Most agency campaigns ship in the full set of IAB sizes — 300×250, 728×90, 160×600, 300×600, 320×50, and so on. They're usually already drawn up in Photoshop as separate documents or artboards. Don't rebuild them. The goal is to bring those designs across as-is.
Break animated elements into their own layers
For each ad size, look at what's meant to move. A headline that slides in? Its own layer. A product shot that fades up? Its own layer. The CTA button that pulses? You guessed it. Anything static — the background, decorative fixed elements — can stay merged.
Think of each layer as one actor in the animation sequence. If it needs to appear, disappear, move, scale, or change opacity independently, it gets a layer.
Export each layer at the full ad dimensions
This is the trick that makes everything downstream easy. Don't crop each layer to its tight bounds. Export every layer as an image the same width and height as the final ad. The transparent area around the actual pixels is what lets layers line up perfectly when stacked.
For a 300×250 ad, every layer image should be exactly 300×250 px. Drop them into Canvosity's canvas and their positions and scale are already correct — no nudging required. You also get a clean base transform for any motion animation, because the layer's geometry fills the ad box.
Pick the right format for each layer
One simple rule: the bottom-most layer is the only one that's opaque, so it's the only one that exports as JPEG. Every layer above it needs transparency — otherwise it'll cover up everything below — so those use PNG or WebP.
Export layers from Photoshop
Photoshop's File → Export → Layers to Files command writes each layer out as its own image, preserving the document dimensions — which is exactly what we want (every layer comes out at the ad size). Here's what the flow looks like.
From the menu bar, walk down this path:
Bring them into Canvosity
Create a new project in Canvosity, add each ad size (300×250, 728×90, etc.), and drag your exported files into the Asset Library. Because every file is full-dim, stacking them rebuilds the original composition exactly — then you can animate each element independently.
Longer animations with multiple backgrounds
Many campaigns aren't a single static frame — they tell a sequence. Scene 1 sets up the message (background + headline + supporting art). Everything animates out. Scene 2 swaps in with a new background and the final CTA. Same workflow, just one extra rule: treat each scene as its own layer group, then stack the groups in playback order.
In Photoshop this means one folder per scene, each containing its own background and the elements that live on top of it. Export every layer the same way as before — full-dim, transparent margin — but with one important format twist for the second scene's background.
Format rule is the same — every background can be JPEG
Format choice depends only on whether the image itself has transparent pixels. Stack position and animation behavior don't change it. Canvosity controls each layer's opacity at runtime, so a JPEG background can fade in, slide in, or hold steady all the same — you don't need an alpha channel just because the layer animates. A layer needs PNG or WebP only when some pixels inside it should be see-through (text shapes, product cutouts, buttons). Every full-coverage opaque background — first, second, third — stays JPEG.
In Photoshop
- One layer group per scene (e.g. Scene 1 — Setup, Scene 2 — CTA).
- Each group holds its own background + the elements on top of it.
- Export every layer at full ad dimensions — same Layers to Files command.
- Re-export every full-coverage opaque background as JPEG. PNG/WebP only when pixels inside need to be transparent.
In Canvosity
- Drop both groups' assets into the Asset Library.
- Stack Scene 2's layers above Scene 1's in the layer panel.
- Give Scene 1 elements an exit animation around the swap point.
- Give Scene 2 elements an entrance animation that starts at (or just after) the swap point.
- The timeline lets you nudge timing per layer until the handoff feels right.
Build once, sync to every size
A campaign almost always ships at 4–8 ad sizes (300×250, 728×90, 160×600, 300×600, 320×50, etc.). The headline, CTA, logo, and background are the same logical layers in every size — only their crop and dimensions change. The click-tag URL, loop count, and any hover behaviors are usually identical too. Animating each size from scratch is the biggest single source of tedium in agency banner work. Canvosity solves it by matching layers across sizes by filename and broadcasting from one ad to all the others — animations, click tag, loop count, and hover effects all transfer in one click.
The naming rule
When you export from Photoshop, give the same logical layer the same filename in every ad size. Different dimensions, same name:
Filenames are matched case-insensitive, trimmed. Spelling
counts. CTA.png ≠ cta-1.png.
Photoshop export tips that make this painless
Use Generate → Image Assets
In Photoshop, enable File → Generate → Image Assets.
Rename a layer to headline.png and PS auto-exports
it whenever you save. Do the same in every size's document and your filenames stay locked in
register across the campaign.
Or use Export As with a script
For more control, use File → Export → Export As…
on each layer with the same destination filename. A Photoshop action recorded once can do this
in batch — assign the action a keyboard shortcut and you're done in a couple of clicks per size.
Keep the layer order identical
Stack your layers the same way in every PSD — background on the bottom, then content, then CTA, then logo. When Canvosity syncs animations, it also mirrors layer order for matched layers so the z-stack stays consistent.
Name your Canvosity layers, not just files
Canvosity matches by the layer's display name. Image layers default to the filename, so consistent filenames give you consistent layer names automatically. If you rename a layer inside Canvosity, do it in every size to keep the sync working.
What gets synced
- Per-layer animations + layer order — for layers whose names (and asset filenames, for images) match between source and target. Target layers' z-stack is reordered to match the source's stacking.
- Missing image layers are auto-added to sibling sizes when you've uploaded an asset with the matching filename at the sibling's exact dimensions. The new layer is created at
(0, 0)covering the full ad — the canonical full-ad-dimensions workflow. Two safeguards keep this conservative: the source layer must itself be at full source-ad dimensions (positioned/sized layers like a 50×50 logo are skipped — we can't safely guess their target position), and an asset matching the sibling's exact width × height must exist in your library. - Click-tag URL — the destination URL the whole ad links to. Almost always identical across sizes in a campaign.
- Loop count — how many times the timeline plays before stopping.
- Outro region — the loop-out time and outro length, so the seamless-loop animation kicks in at the same beat on every size.
- Hover effects — the ad-global mouseover behaviors (button scale, glow, etc.). Each hover effect's target layer is remapped to the corresponding layer in the target ad (including newly auto-added ones); a hover effect whose target doesn't exist in a sibling ad is dropped for that ad only.
How to use Sync animations to other sizes
- Build your campaign in Canvosity with every size. Upload assets to each size using consistent filenames.
- Pick one size as your "source" — usually the largest (300×600 or 728×90) since it has the most timeline real estate.
- Animate everything on the source ad: entrances, exits, hover effects, loop timing. Set the click-tag URL.
- In the ad selector (bottom-left of the editor), right-click the source ad and choose Sync animations to other sizes.
- Confirm. Canvosity walks every other size, copies the timeline / click-tag / loop count / hover effects onto matching layers, and reorders layers to match the source's stacking.
- Layers that don't match are left alone — the toast tells you how many. If a layer didn't get its animations, the most common reason is a mismatched filename. Rename and re-sync.
What sync does NOT touch
- Per-layer position, size, and rotation on EXISTING layers — each size has its own crop, so these stay independent.
- Background color and border — left as each size's own setting.
- Non-image layers (text, shape) that don't already exist in a sibling — too many free parameters (font, content, color, position, size) to safely auto-create. You'll need to add these by hand if missing.
- Existing target layers the source doesn't have — sync only updates the overlap, never deletes work you added per-ad.
- The source ad itself — sync is one-way (source → others).
Making it loop seamlessly
Most banner ads loop 2 or 3 times. Without any setup, the timeline just snaps back to the start when it reaches the end — the viewer sees a visible jump cut. To make the loop-back feel intentional, you'd usually animate your final visible elements out (fade, slide off, scale away) so the screen returns to its initial blank state before looping. The catch: those exit animations should only play between loops — never on the final loop, where you want the ad to come to rest with everything visible.
Canvosity's outro region handles this for you. Mark a section at the end of your timeline as the outro, place your loop-back animations inside it, and on the final loop the playback automatically pauses at the outro start — leaving every element visible in its just-before-outro state.
In the timeline header, set Outro at to the time where your loop-back transition begins (typically just after your last "main" animation ends). Or drag the amber triangle on the timeline ruler.
Set Outro length to how long the transition should run. The outro region (striped amber band on the timeline) shows the configured window. Resize from the right edge by dragging.
Add fade-outs, slides, or scale-downs to your visible elements inside the outro band. Anything you place there plays between every loop — and is silently skipped on the final loop, so the ad ends with everything visible.
When you don't need an outro
If your ad's final state already matches its initial state — for example, an ad where everything fades back to a blank background by the end of the main animation sequence — you don't need an outro region. The loop-back is already seamless. The outro is for the common case where your final state has elements visible (text, logo, CTA) that the viewer needs to see at the end.
Editing the HTML / CSS / JS directly (advanced)
The Preview panel has a "View Code" toggle that opens HTML, CSS, and JS tabs. You can hand-tweak the generated code — useful for one-off network-specific shims, a custom GSAP plugin, or test-rigging a third-party verification tag. Canvosity then exports a real zip with your edits baked in, so this path is a first-class workflow rather than an escape hatch.
The flow
- Build everything you can in the canvas first — layers, animations, hover effects, click-tag, outro. Apply the cross-size sync if you have multiple sizes. Get the canvas as close to the final state as possible.
- Click Preview → View Code. Make your hand-edits in any tab — HTML, CSS, or JS.
- Click Apply Changes. Canvosity splices CSS / JS edits back into the canonical HTML, so the preview iframe always reflects what would ship. Apply changes from each tab in turn if you're editing more than one.
- Click Export with edits in the preview toolbar. The button appears as soon as you've applied any change. A per-size zip lands in the Exports drawer — same flat structure as a normal per-ad export (
index.html+images/folder + backup JPG), with your edited code shipped verbatim asindex.html.
What "Export with edits" includes
- Your HTML verbatim — including any CSS spliced into the inline
<style>block and any JS spliced into the animation<script>block. - The same
images/folder a normal per-ad export would produce — every image referenced by the canvas state for this ad. Your HTML'ssrc="images/<file>"references resolve out of the box. - A backup JPG generated by headless Chrome from your edited HTML — so the static fallback matches the live ad's final freeze frame.
- The zip's filename gets a
-custom-infix so you can tell custom vs canvas exports apart in your downloads folder.
Per-ad only — and a few sharp edges
- Custom edits are per-ad, not per-campaign. The code panel is single-size. If you need the same custom code on every size in the campaign, you'll apply + export each size individually. Cross-size animation sync only covers the canvas state, not the code edits.
- Edits live in the current preview session only. They are not autosaved and disappear on browser reload. They are also overwritten the next time the preview regenerates — that happens whenever you change a layer, animation, asset, or click Preview again. Export the edited zip before doing anything else.
- Readiness validation does not re-run on the edited bytes. Canvosity's size / click-tag / animation-duration checks run on the canvas state. If your edits push you over the DV360 polite-load cap or change the click-tag, you're on your own to verify against the network's spec.
- Regular Export Package still uses the canvas, not your edits. If you trigger a normal Export Package while you have unsaved code edits, the editor warns you with a confirm dialog — the regular export will rebuild from the canvas state and drop your edits.
For most campaigns you won't need this — the canvas + animation panel cover everything an IAB HTML5 banner needs, including click-tag, loop, outro, and hover effects. Reach for the code editor only when a specific network or QA test rig requires something the editor doesn't expose directly (verification tags, custom polite-load timing, third-party measurement pixels, etc.).
Quick checklist before exporting
Keep this tab open while you work through a set.
- Every animated element lives on its own layer.
- Document dimensions match the target ad size (300×250, 728×90, etc.).
- Exporting via Layers to Files with Trim Layers OFF.
- Background re-exported as JPEG (and the PNG version discarded).
- All non-background layers are PNG (or WebP) to preserve transparency.
- Files named so you can tell sizes apart when you drop them into the Asset Library.
- For multi-scene ads: each scene grouped in Photoshop. Every full-coverage opaque background can be JPEG, regardless of layer order.
Ready to build
Open Canvosity and bring your first campaign across using the steps above.
Go to Canvosity