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

  1. Start with your existing Photoshop campaign — all the ad sizes should already be there as separate documents or artboards.
  2. For each size, split anything that needs to move, fade, or animate into its own layer.
  3. 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).
  4. The bottom-most layer (the background) exports as JPEG. Every layer above it needs transparency, so use PNG or WebP.
  5. Drop all the files into Canvosity — layers stack in register, animation is a single click per element.
  6. Use identical filenames across every ad size (e.g. headline.png in 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.

1

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.

300 × 250 Medium Rectangle 728 × 90 Leaderboard 160 × 600 320 × 50 The same set of sizes you've already designed in Photoshop
2

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.

Original (flattened) break apart Separated layers Background Headline Product CTA Button
3

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.

✗ Cropped tightly — hard to align 300 × 250 ad area 60×18 png 40×40 png 50×18 png Each has different dims — you'd have to position them by hand. ✓ Full-dim layers — stack & done 300 × 250 ad area Each layer PNG is 300×250 — positions match by construction.
Pro tip: Canvosity also draws a grid overlay on the canvas. Since every layer asset fills the grid, snapping, resizing, and animating all start from a clean base — no mental math.
4

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.

Layer stack (top → bottom) 1. CTA Button PNG / WebP 2. Product shot PNG / WebP 3. Headline PNG / WebP 4. Background (bottom) JPEG Why this combo? JPEG (background only) Smallest file size. No transparency, so reserve it for the opaque base. PNG (everything above) Keeps alpha. Universally supported across every ad network. WebP (smaller PNG alternative) Better compression with alpha. Supported by all modern DSPs.
5

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.

Stylized approximation of Photoshop's UI — use as a map, not a pixel-match
Ps Campaign_300x250.psd @ 100%
Photoshop File Edit Image Layer Select Filter
Layers
👁 CTA Button
👁 Product
👁 Headline
👁 Background

From the menu bar, walk down this path:

File Export Layers to Files…
Export Layers To Files
Destination ~/Campaign/300x250/
File Name Prefix 300x250_
File Type PNG-24
Visible Layers Only
Trim Layers ← leave OFF
Cancel Run
Critical: Make sure Trim Layers is off. If it's on, Photoshop crops each layer to its tight bounding box and you lose the full-dim alignment we worked for in step 3.
For the bottom background layer only: re-export it separately as a JPEG at ~85% quality. You can use File → Export → Save for Web (Legacy) or File → Export → Export As… with JPEG selected. Delete the PNG version of the background — you only want the JPEG in your final set.
6

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.

Exported files cta.png product.png headline.png background.jpg drop in Canvosity canvas (300×250) Each asset fills the canvas — positions restore automatically.
Next: Select any layer in Canvosity, open the Animations section in the inspector, and pick an entrance, motion, or exit effect. Because each layer is already aligned in the ad box, motion animations move relative to a predictable base — no surprise offsets.
7

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.

Scene 1 — opening headline.png hero-art.png tagline.png background.jpg JPEG Scene 2 — final CTA cta-button.png offer-text.png background-2.jpg JPEG In playback Scene 1 visible swap Scene 2 visible Two layer groups, one timeline. Each scene's elements animate in and out independently.

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.
Scaling up: the same pattern extends to three or more scenes. Each new scene is another layer group sitting above the previous one in the stack. Every solid, full-ad-size background can stay JPEG; only layers that contain transparent pixels (text, cutouts, button shapes) need PNG or WebP.
8

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:

300×250/
background.jpg
headline.png
cta.png
logo.png
728×90/
background.jpg # same filename, different crop
headline.png
cta.png
logo.png

Filenames are matched case-insensitive, trimmed. Spelling counts. CTA.pngcta-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

How to use Sync animations to other sizes

  1. Build your campaign in Canvosity with every size. Upload assets to each size using consistent filenames.
  2. Pick one size as your "source" — usually the largest (300×600 or 728×90) since it has the most timeline real estate.
  3. Animate everything on the source ad: entrances, exits, hover effects, loop timing. Set the click-tag URL.
  4. In the ad selector (bottom-left of the editor), right-click the source ad and choose Sync animations to other sizes.
  5. 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.
  6. 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.

1. Set the seam

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.

2. Set the length

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.

3. Animate inside

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

  1. 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.
  2. Click PreviewView Code. Make your hand-edits in any tab — HTML, CSS, or JS.
  3. 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.
  4. 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 as index.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's src="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.

Ready to build

Open Canvosity and bring your first campaign across using the steps above.

Go to Canvosity