Product guide
Playable Ads Documentation
Reference for the Video and Image editors: every feature, object type and property, portrait and landscape layouts, localization, export specs and team collaboration.
Video Tutorials
The beginner tutorial builds a playable ad from a template to the exported file, and each editor has its own narrated tour. Every video page has chapters and a full transcript, and captions in the editor's languages on YouTube.
How to Make Playable Ads (No Code) – Beginner Tutorial 2026
Tutorial
Playable Ads Maker Tour: Mini-Games, Events & Scenes (No Code)
Tutorial
Video Playable Maker: Turn Any Video into a Playable Ad (No Code)
Tutorial
End Card Maker: Animated End Cards for Playable Ads (No Code)
Tutorial
Playable Ad Events: Make Anything React to a Tap or Hold (No Code)
Tutorial
Playable Ad Variables: Counters, Conditions and Show If (No Code)
Tutorial
Text in Playable Ads: Fonts, Wrapping, Languages and Right-to-Left
Tutorial
Unity Ads Playable Tutorial: Requirements, Test and Upload (No Code)
Tutorial
Playable Ad Buttons: Button vs CTA Button, and the End Card Rule
Tutorial
AppLovin Playable Ads: Requirements, Preview and Upload
Tutorial
End Card Maker: Animated End Cards for Playable Ads (No Code)
Tutorial
Google Ads Playable (HTML5) Ads: Requirements + Validator
Tutorial
Playable Ad Animations: Entrance, Loop and Exit (No Code)
Tutorial
Particle Effects in Playable Ads: Every Setting Explained (No Code)
Tutorial
What Are Playable Ads? How They Work, in 5 Minutes
Tutorial
Playable Ad Input Controls: Every Slider, Toggle and Stepper Setting
Tutorial
The Playable Ad Export Window, Explained (Every Setting)
Tutorial
Meta Playable Ads Tutorial: Specs and Upload (Facebook)
Tutorial
Video Breaks in Playable Ads: Every Gesture and Setting (No Code)
Tutorial
TikTok Playable Ads: Requirements and Export Tutorial (No Code)
Tutorial
Mintegral Playable Ads: Requirements and Upload (No Code)
Tutorial
How to Remix a Playable Ad Template (No Code, Free Plan)
Tutorial
Multi-Scene Playable Ads: Branching and End Cards (No Code)
Tutorial
Masks in Playable Ads: Cut Any Layer to Any Shape (No Code)
Tutorial
What Is MRAID? Playable Ads MRAID Explained + How to Test It
Tutorial
Follow the Path: Drag-Along-a-Route Playable Ads (No Code)
Tutorial
Game Templates in Playable Ads: A Whole Mini-Game as One Object
Tutorial
Calculator Playable Ads: Formulas, Lookup Tables and Number Formats
Tutorial
Product Configurator Playable Ads: Photo Swaps and Your Own Buttons
Tutorial
Quiz and Product Finder Playable Ads: Votes and Your Own Buttons
Tutorial
3D Product Playable Ads: Import a GLB, Turn, Zoom, Recolour
Tutorial
Localize a Playable Ad: Translations, CSV Import and Right-to-Left
Tutorial
Kinetic Text for Playable Ads: Letter-by-Letter Animation (No Code)
Tutorial
Deep Links for Playable Ads: Send the Viewer's Choice to Your Page
Tutorial
Progress Bars and Rings for Playable Ads: Styles and Milestones
Tutorial
Countdown Timer for Playable Ads: Formats, At Second and Timer End
Tutorial
Repeater and Data Tables: Product Grids in Playable Ads
Tutorial
Choice Chips for Playable Ads: Let Players Pick (No Code)
Tutorial
Images in Playable Ads: Fit, Crop, Tint and Frame (No Code)
Tutorial
Playable Ads Maker Editor Tour: Every Panel and Shortcut
Tutorial
Portrait and Landscape Playable Ads From One Project
Tutorial
Custom Fonts in Playable Ads: Upload, Weights and File Size
Tutorial
Playable Ad Examples - and How to Build Each One (No Code)
Tutorial
Interactive Ads for Apps and Brands: Build One Today
Tutorial
Shapes in Playable Ads: 3D Buttons and Glass Panels (No Code)
Tutorial
Sprite Sheet Animation in Playable Ads (No Code)
Tutorial
Parallax Scrolling Backgrounds in Playable Ads (No Code)
Tutorial
Scrolling Text Tickers in Playable Ads (No Code)
Tutorial
Sound in Playable Ads: Music, Effects and the Rules (No Code)
Tutorial
Backgrounds in Playable Ads: Colour, Photo and Every Phone Shape
Tutorial
Scene Transitions in Playable Ads: Wipe, Zoom Blur and More (No Code)
Tutorial
Effects in Playable Ads: Glow, Outline, Light and Grayscale (No Code)
Tutorial
Overlay in Video Playable Ads: Tint the Video Under Your Text
Tutorial
Timed Text and the End Screen in Video Playable Ads
Tutorial
Shrink a Playable Ad Under 2 MB - Compress Images in One Click
Tutorial
Why Won’t My Playable Ad Export? The Build Check, Explained
Tutorial
Save Playable Ads to the Cloud, Restore Versions, Share a Link
Tutorial
Client Review for Playable Ads - Comments and Approval in One Link
Tutorial
Playable Ads Maker: The Complete Master Class (Every Tutorial, Beginner to Advanced)
Tutorial
Feel Effect: Make Every Tap Feel Good in Your Playable Ad (No Code)
Tutorial
Confetti, Coins and Reward Stars in Playable Ads (No Code)
Tutorial
Pop Text in Playable Ads: Floating +10s, Combos and Praise (No Code)
Tutorial
Sound Effects in Playable Ads: 14 Game Sounds, No Audio Files (No Code)
Tutorial
Guide Hand: Show Players Exactly Where to Tap (Playable Ads, No Code)
Tutorial
Light Effects in Playable Ads: Rays, Glow, Sparkles, Shine (No Code)
Tutorial
Count-up Numbers in Playable Ads: Scores, Coins and Prices (No Code)
Tutorial
Physics Pile: Coins and Gems That Fall, Stack and Scatter (No Code)
Tutorial
Make a Brand-New Playable Game with AI - From One Sentence
Tutorial
Make an End Card with AI - From Your App Store Link
Tutorial
Edit an AI Playable Ad by Chat, A/B Test It and Translate It
Tutorial
Make Playable Ad Variations with AI - Many Ads from One Template
Tutorial
Export Pass: Export Playable Ads Without a Subscription
Tutorial
1. Getting Started
Launching the Editor
- Click Start Creating on the homepage
- You'll be taken to Choose your editor at
/editor - Pick Video Playable Maker for playable ads built on a video, with breaks and overlays; End Cards Maker for a single interactive end card; or Playable Ads Maker (the Image editor) for multi-scene playables and mini-games
- The Start a project window opens. Choose the canvas size (and, in the Video Playable Maker, the orientation), then pick a template from the library beside it, or press Start from scratch. A template opens laid out for the size you chose
- If you have projects saved on this device, they are listed first under Continue a project, newest first (see 22.1)
Remix this template: every page in the template gallery has a Remix this template button. It opens the right editor with that template loaded, after you pick the canvas size. If a project is already open, the same window warns you before replacing it, and Cancel keeps your project as it is. The library holds 254 prebuilt playables (4 of them video playables) and 40 end cards, and every plan can re-skin and export any of them.
Video version: How to Make Playable Ads (No Code) – Beginner Tutorial 2026 (3:06) goes from template to exported file.
Understanding the Interface
Left Panel
Scene panel: object hierarchy, add/reorder/duplicate/delete objects, video editor break timeline
Center Canvas
Visual editor canvas: drag to move, corner handles to resize, live animation preview via Play button
Right Panel
Properties panel: Position, Properties, and Animation tabs for the selected object
Play Mode / Animation Preview
Click Play in the top bar (or press Space) to preview all animations and particle effects on the canvas in real time. Clicking any object while playing selects and previews that object's animations. Press Stop (or Space again) to return to edit mode. Dragging or resizing objects pauses animations automatically.
2. Editor Comparison: Video vs End Card vs Image
All three editors share the same object types, animations, particle system, animated sprite and export options. The Video Playable Maker and the Playable Ads Maker export to all 12 ad networks; the End Cards Maker exports to the 7 that take an interactive end card. The difference is workflow: video-specific features, a template-driven single screen, or a blank canvas with multi-scene logic.
| Feature | Video Playable Maker | End Cards Maker | Playable Ads Maker |
|---|---|---|---|
| Background | Color, image, or video (portrait & landscape) | Color or image only | Color or image only |
| Video upload limit | 3.5 MB max per video (MP4 recommended) | Not available | Not available |
| Scenes | Single scene + breaks/end screen | Single scene, template-defined | Multiple: add, duplicate, reorder, delete freely |
| Templates | 4 video templates, or a blank project | 40 templates (reward card, store listing, live proof, countdown, leaderboard, feature grid, coupon, rating breakdown, journey map, device mockup, before/after, comparison, pricing tiers, schedule, streak calendar, receipt, chat thread, metrics board, queue, referral and more) | Game and brand templates from the prebuilt library, or a blank canvas; can add an End Card template scene from the end card library |
| Breaks & overlays | Yes: time-based breaks, end screen, permanent overlay | No | No |
| Break types | Break (click/hold/double-tap), Break Hold Path (trace path + optional video sync) | Not available | Not available |
| Path animation | Yes: ellipse, rectangle, infinity, custom; per-orientation | No | No |
| Multi-scene & transitions | No | No | Yes: crossfade, wipe / slide, zoom blur, pixelate |
| Interactive events | Yes: 3 triggers × 3 video actions (image/button only) | No | Yes: the full trigger and action list (gestures, timers, progress, controls, game milestones; scene, object, variable, effect and sound actions) |
| Timely appearance | Yes: show any object (except background/audio) for the full video or a time range | No | No |
| Autosave / draft | Saves as you work to one of the 5 project slots on this device (see 22.1) | Yes (same) | Yes (same) |
| Particle FX | Yes: 29 presets, 6 emitter shapes, 4 particle shapes, 4 color modes, full physics | Yes (same) | Yes (same) |
| Animated Sprite | Yes: sprite sheet & frame-by-frame, full playback controls | Yes (same) | Yes (same) |
| Parallax Background | Yes: scrolling/tiling background, adjustable speed & direction | Yes (same) | Yes (same) |
| Overlay | Yes: full-screen color tint, opacity, Entry/Exit Fade | Yes: static tint (no fade animation) | Yes: static tint (no fade animation) |
| Snap to grid | Yes: 4–50px, toggle + grid lines | Yes (same) | Yes (same) |
| Object types | Background (+ video), Text, Scrolling Text, Image, Button, CTA Button, Audio, Timer, Particle FX, Animated Sprite, Parallax Background, Shape, Mask, Overlay, Progress, Slider, Toggle, Stepper, Choice Chips, Repeater, Guide Hand, Light Effect, Count-up, Physics Pile, Character, Dialogue, Atmosphere | Same minus video background | Same minus video background; plus Game Templates and Interactive Modules |
| Export | Same: pre-validation, compression, progress, cancel | Same | Same |
| Ad networks | Google, Meta, TikTok, Mintegral, Liftoff, Moloco, AppLovin, Unity, Pangle, Vungle, Chartboost, InMobi (12 networks) | Unity, Vungle, Liftoff, Moloco, InMobi, Chartboost, Mintegral (7 networks: the ones that take an interactive end card) | Same as the Video Playable Maker (12 networks) |
Video Playable Maker: Exclusive Features
Video Background
One video per orientation (portrait + landscape). MP4 recommended; max 3.5 MB per file. Video pauses during breaks and resumes when the user completes the break action.
Overlay Types
- Break: Pauses video at a time; user resumes by click, hold, or double-tap
- Break Hold Path: User traces a path (ellipse, rectangle, infinity); configurable 70–100% completion to resume
- End Screen: Appears at video end, typically as a CTA overlay
- Permanent Overlay: Shown during a time range; buttons can jump to time
Video Triggers
Fire at: On video start, At time (seconds), On video end, On loop restart. Actions: show/hide object, unlock interaction, set text, animate. Targets any image, button, or text in the scene.
Object Events (Image & Button)
Main-scene image and button objects have their own Events tab (⚡) in the Properties panel. It uses the same tap / double-tap / hold triggers as the Image editor, but is scoped to 3 video-specific actions: Continue Video (resume playback, dismissing an active break if one is showing), Jump to Time (seek to a time in seconds, clamped to the video's duration), and Open End Card (switch straight to the End Screen). Works live while scrubbing/playing in the editor preview, and identically in the exported HTML.
Timely Appearance
Every object type except Background and Audio has an Appearance toggle in its Properties panel: Full video (always visible, the default) or Time frame (visible only between a Start and End time in milliseconds, clamped to the video's duration). The object still respects its own manual show/hide toggle on top of the time window.
Scene Interaction Modes
- CTA button: Designated button fires iOS/Android URL
- Tap anywhere: Any canvas tap → CTA
- Tap to continue: Tap advances the flow
- Hold-to-fill: 1–10 seconds hold fills a progress bar → CTA
- Multi-tap: 2–10 taps required → CTA
Delayed interaction: 0, 1, or 1.5 seconds before taps unlock (UA best practice).
End Cards Maker: Templates & Single-Scene Workflow
40 Built-In Templates
Each card is laid out for portrait and landscape, and each is a different arrangement: reward cards, store listings, live proof, countdowns, leaderboards, coupons, comparisons, pricing tiers, receipts, chat threads and more. Most carry a headline, supporting copy, a hero, a CTA button and ambient motion. Every card opens at the canvas size you pick and is translated into the editor's languages.
Single-Scene, Template-First Flow
Opening the End Card editor shows the start window with the end card library beside the canvas size, so you begin from a card (or from scratch). The scene panel does not expose Add Scene, scene transitions, or the Events tab; the editor is for finishing one screen and exporting it.
Playable Ads Maker: Multi-Scene, Transitions & Events
The only editor with a blank starting canvas and full scene management: add, duplicate, reorder, and delete scenes; set a transition per scene (crossfade, wipe, zoom blur, pixelate); and wire up the Events tab on images, buttons, text, shapes and every interactive object. See Section 18 for the full reference.
3. Editor Overview
Viewport Settings
- Common sizes: 320×50, 300×250, 320×480, 375×667 (iPhone), 414×896
- Set width and height in the top bar
- Zoom controls 50%–200%; Fit (100%) and Zoom to selection (150%)
- Portrait / Landscape toggle in top bar: switch orientation to edit and preview each independently
Left Panel: Scene Panel
Object hierarchy and scene list. Video editor: breaks and triggers in timeline (add Break, Break Hold Path, End Screen, Permanent Overlay).
- Always-visible row actions: every object row shows a compact icon grid (Move Up · Visibility · Duplicate on top, Move Down · Lock · Delete below), so there is no need to select the row first
- Multi-select: Shift+click rows to add/remove them from the selection; the last-clicked object stays the "active" one for the Properties panel
- Bulk-edit bar: appears when 2+ objects are selected: Hide All, Show All, Lock All, Unlock All, Bring All to Front, Send All to Back, Duplicate All, Delete All
- Alignment tools: When 2+ objects are selected, the bulk-edit bar also shows 8 alignment/distribution buttons: Align Left, Center H, Align Right, Align Top, Center V, Align Bottom (align each object to the selection's bounding box) and Distribute H / Distribute V (even spacing, enabled with 3+ objects)
- Right-click context menu: Duplicate, Lock/Unlock, Hide/Show, Bring to Front, Send to Back, Delete. Right-click any object row to open it
Keyboard Shortcuts & Tools
- Undo/Redo: Ctrl+Z / Ctrl+Y (up to 50 history steps)
- Delete object: Delete or Backspace (deletes all selected objects if multiple are selected)
- Deselect: Escape
- Multi-select: Shift+click objects in the canvas or scene panel
- Copy/Paste: Ctrl+C / Ctrl+V (paste across scenes or within a scene)
- Nudge: Arrow keys; Shift+Arrow for fine nudge. All selected objects move together
- Play/Stop preview: Space bar or Play button
- Composition grid: 2×2, 3×3, 4×4, 10×10 overlay; toggle on/off
- Snap to Grid: Floating bar toggles pixel snapping with adjustable grid size (4–50px) and grid line overlay
- Autosave: every editor saves your work as you go to its slot on this device. The Save & draft options menu in the header shows whether the project is saved here, and saves it to the cloud
3.1 Playable Ad Settings
Click General Properties at the top of the left panel to open Playable ad settings. Besides the ad's name and its start scene, two settings shape the whole ad. Both are off until you turn them on, and both show in Play and in the exported ad.
Ad time limit
Off, or 5 seconds to 3 minutes. A small countdown sits in the corner, and when it reaches zero the ad goes to the End Card. The clock starts once the first frame is on screen. Use it to keep a long game inside the length a network or campaign expects, so every viewer reaches the CTA.
Brand intro
Tick Show your logo over the first frame, choose a logo, and pick how long it stays (0.4 to 1.2 seconds). It never blocks a tap: the game plays underneath from the first moment, so the brand is seen without delaying the hook.
4. Creating Objects & Property Reference
Adding Objects
- Click Add New Object in the left panel
- Select an object type from the modal
- Object appears centered on canvas
- Customize in the right Properties panel
Available Object Types
Background
Color, image, or (Video editor) video. Always at z-index 0.
Properties: type (color/image/video), background size/position, blur (0–30px per orientation), darken (0–100% per orientation), opacity, blend mode. Video: portrait + landscape URLs, max 3.5 MB (MP4).
Text
Multi-line text with font, spacing, stroke and shadow settings.
Properties: content, font family/size/weight, line height, letter spacing, text align, text decoration, text transform, drop shadow, stroke (width + color), word wrap, borders, opacity, rotation, scale, blend mode, per-character entrance/loop animation (see Section 17). Video editor: also has a full-video/time-frame Appearance toggle.
Image
An uploaded picture you can move, rotate, scale, tint and frame.
Properties: source URL, object fit (cover/contain/fill/none/scale-down), tint (hex overlay per orientation), anchor/pivot X&Y (0–1), borders (width/color/radius), alt text, opacity, rotation, scale, blend mode. Video editor: also has an Events tab (continue video / jump to time / open end card) and a full-video/time-frame Appearance toggle.
Button
Interactive CTA button; fires store URLs or break actions.
Properties: text, button image (optional), background color, text color, font family/size/weight, borders (width/color/radius). Click action: iOS/Android URLs (main scene) or resume/jump-to-time (break overlays). Video editor: also has an Events tab (continue video / jump to time / open end card) and a full-video/time-frame Appearance toggle.
Audio
Music or a sound effect. OGG or MP3. Add as many as a scene needs.
Properties: autoplay, loop, volume (0–1), muted. The first Audio object in a scene is the music bed and autoplays; each one added after it starts silent and plays once, ready for a Control Audio action. The audio travels inside the exported file, and stays silent until the viewer's first tap.
Particle FX
Smooth, high-volume particle effects. 29 presets, 6 emitter shapes, 4 particle shapes, 4 color modes, full physics. See Section 5.
Properties: preset, emitter (position, rate, angle, spread, radius), shape (circle/square/star/image), color mode (single/gradient/random), size, speed, gravity, lifetime, opacity, burst. Live preview in editor. Video editor: also has a full-video/time-frame Appearance toggle.
Animated Sprite
Frame-by-frame or sprite sheet animation with speed, frame range and loop settings. See Section 6.
Properties: source mode (sheet/frames), FPS, auto play, start delay, start/end frame, loop, loop count, ping-pong, reversed, on complete, fit mode (stretch/contain/cover). Video editor: also has a full-video/time-frame Appearance toggle.
Parallax Background
Scrolling, infinitely-tiling background built from a single image. See Section 7.
Properties: tile image, auto scroll, direction presets, speed X/Y (px/s), tile scale X/Y. Video editor: also has a full-video/time-frame Appearance toggle.
Shape
Vector shape drawn directly on canvas, with no image upload required. See Section 8.
Properties: shape type (rectangle/circle/ellipse/triangle/star), surface (Flat, 3D Lit or Glass), fill color, stroke color and width, border radius (rectangle only), star points (star only). Full transform, blend mode, FX filters, and animations supported. Video editor: also has a full-video/time-frame Appearance toggle.
Scrolling Text
Marquee-style ticker: text scrolls continuously in a loop within a clipped box. See Section 9.
Properties: text content, direction (left/right/up/down), speed (px/s), gap (px), separator character, background color and opacity, font family/size/weight/color, letter spacing, drop shadow, stroke. Video editor: also has a full-video/time-frame Appearance toggle.
Progress Indicator
Bar, ring, arc, stepper, pie or liquid gauge, driven by time, a variable, events or scene position. See Section 10.
Properties: source (time/variable/set-by-events/scene/indeterminate), style, min & max, segments, track and fill colours, gradient or health-bar thresholds, corner radius, thickness and arc angles, markers, leading knob, shimmer, stripes, label format and position, value tween and entry animation. Fires Progress Complete and Progress Milestone events. Video editor: also has a full-video/time-frame Appearance toggle.
Slider / Toggle / Stepper
Controls that ask the viewer a question and write the answer to a Variable. See Section 11.
Slider: min, max, step, horizontal or vertical, drawn with the full Progress styling. Toggle: on/off colours, knob, optional ON/OFF text. Stepper: minus / read-out / plus, with prefix, suffix and decimals. All three bind to a Number or Boolean variable.
Choice Chips
A row of options, one of which is chosen. It is the commonest shape a non-game playable takes. See Section 11.
Options typed in as a comma-separated line (or read from a table), one row or wrapped, with separate colours for the chosen chip. Writes the choice to a Variable.
Repeater
One card design drawn once per row of a data table. See Section 12.
Grid, stack or rail layout; card size, gap and max rows; optional selection that writes the chosen row to a Variable. Column values drop into the card as {tokens}, so changing a price is one table cell.
Overlay
Full-screen color tint with adjustable opacity. Available in all editors. See Section 13.
Properties: color, opacity (shared Visual Effects slider). Video editor also has full-video/time-frame Appearance toggle and Entry/Exit Fade (duration + easing, anchored to the time-frame window). Always covers the full canvas; never blocks clicks on objects beneath it.
CTA Button / CTA Button with Text
Dedicated ad-redirect button that auto-routes to iOS/Android store URLs without per-object link config.
Renders identically to a regular Button but is wired directly to the export's iOS/Android store URLs (same as the End Card redirect). No Events tab, because the redirect is automatic. Only one CTA Button may exist per scene (Video/End Card) or per project (Image editor). Cannot coexist with an End Card object. One Style option turns it into a small corner install pill that stays on screen during play (see Section 14). Available in all three editors.
Mask
Cuts other objects down to a shape or a picture. Draws nothing itself.
Mask from a shape (rectangle with a corner radius, circle, oval, triangle, star), from a picture, or from an outline you trace yourself. Start from one of eight shapes (or press Convert to editable points to turn the shape you already have into one), then drag its handles, click the outline to add a point where you clicked, and alt-click a point to remove it. Drag a point outside the frame and the frame grows to fit it. Smooth curves the corners, and the round grip on the stem rotates the whole thing. A picture can be read two ways: Alpha uses its transparency, Luminance uses its brightness (white shows, black hides). Invert punches a hole instead of cutting a window; Feather softens the edge. Applies to the objects below it, to every object in the scene, or to the ones you pick by hand. Backgrounds, overlays and fullscreen parallax are left alone unless you name them. Move, animate or hide the mask and the cut-out follows, so a mask sliding across a headline is a wipe reveal. Never blocks clicks.
Guide Hand
A hand that shows the viewer what to do: tap, double tap, press and hold, drag, swipe or draw a circle.
Point it at any object and the fingertip lands on that object's centre, in both orientations and wherever it moves. A drag can end on another object. It hides on the viewer's first touch and comes back after a few idle seconds. Light, dark or your own hand picture. Never blocks a tap. See Section 8.2.
Light Effect
Turning light rays, a soft glow, twinkling sparkles, or a shine that sweeps across a card or button.
Fills its own box, so you size it like any object. Two colours, strength, speed, glowing or solid blend; the shine is clipped to the box with a corner radius. Never blocks a tap. See Section 8.2.
Count-up
A number that rolls from one value to another: savings, a score, a percentage.
Count From → To when it appears on screen, or follow a variable and roll every time it changes. Prefix, suffix, decimals, thousands separator, easing and any font. Fires Count Finished. See Section 8.2.
Physics Pile
Real falling pieces (coins, candies or your own pictures) that drop in, collide and settle.
Tap to scatter or pop a piece; grab a piece and throw it. Round, square or mixed pieces, count, size, gravity, bounce and grip. Fires Pile Settled. See Section 8.2.
Timer
A countdown clock for a beat-the-clock moment or a limited-time offer. See Section 8.4.
Duration in seconds, four formats (01:30, 90, 01:00:00, 1m 30s), colour, font, size and weight, and an optional background plate with a corner radius. Fires Timer End and At Second.
Character
An animated character drawn by the editor, with no artwork to upload. See Section 8.3.
Four characters (Blob mascot, Young knight, Horned ogre, Agent), 8 colour skins or any colour you pick, facing left or right, and four clips (Idle, Win (cheer), Lose (slump), React (tap)). Change its clip from any event with a Character Clip action.
Dialogue
A speech bubble with a name tag, a line that types itself out, and up to three choice buttons. See Section 8.3.
Name, line, typing speed, tail side and six colours. Each choice fires its own trigger (Choice 1, 2, 3 Picked), and Line Finished fires when the typing ends. The name, line and choices are translated in the language manager.
Atmosphere
A mood layer over its box: a vignette, drifting ambient particles and an optional pulse at the edges. See Section 8.3.
Vignette strength and colour; ambient snow, light dust, petals, wind streaks with amount, speed and colour; a danger pulse in the colour you choose. Never takes a tap.
Game Template
Embeds a playable mini-game (111 genres: match-3, runners, sorting, merging, puzzles and more) directly into your ad. Image editor only. See Section 14.
Select a genre from the Game Templates section of the Add Object window. The entire mini-game (assets, logic, win/lose conditions, sound effects and guide hand) runs inside the canvas. Only one Game Template per scene. Configure difficulty, speed, colors and round duration in the Properties panel, and optionally a story intro before play. Winning or losing routes to your End Card.
Common Properties (All Objects)
- Position: X, Y (pixels), stored per orientation as xPortrait, yPortrait, xLandscape, yLandscape
- Size: Width, Height, with per-orientation variants for text and images
- Transform: Rotation (degrees), Scale X, Scale Y
- Opacity: 0–1
- Blend Mode: normal, multiply, screen, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion (per orientation)
- Z-index: Layer order; higher = on top
- Visibility: Show/Hide toggle; hidden objects not rendered or exported
- Name: Display label in the scene panel
Editing Objects
- Select: Click on canvas or scene panel; Escape to clear
- Move: Drag, or Arrow keys (Shift for fine nudge)
- Resize: Drag purple corner handles
- Inspect: Position, Properties, Animation tabs in right panel
- Delete: Delete / Backspace, or scene panel icon
- Duplicate: Ctrl+C → Ctrl+V, or scene panel duplicate icon
- Reorder layers: Move up/down in scene panel or drag z-index
4.1 Custom Fonts
Upload your own typeface and use it anywhere text appears: Text, Buttons, Scrolling Text, Progress labels, Slider and Stepper labels, Chips and countdown timers. Open the manager from the Font Family dropdown in any Properties panel and choose Upload a font…, or drag a file onto the drop zone. Supported formats are .woff2, .woff, .ttf and .otf, up to 12 MB.
Only the characters you use are embedded
A playable is a single self-contained HTML file under a hard size cap, and a raw font file is routinely 200–500 KB, a quarter of the whole budget before you add a single image. So the export subsets every font: it collects the exact characters your ad draws and embeds only those glyphs, as WOFF2.
A CTA headline
~23 characters, about 17 KB in the file
A typical ad
~72 characters, about 41 KB in the file
The raw upload
The same font unsubset: 290 KB or more
The font manager shows the real figure for each font, measured the same way the export measures it, so the number you read and the bytes the file gains cannot disagree. It moves as you write, because adding new characters adds glyphs. Your original upload is kept intact in the project; subsetting happens at export.
Check the font has the characters you need
This is the one thing worth checking every time. Display fonts often contain letters, digits and a little punctuation, and nothing else. A button reading “SEE MY REWARD →” is the usual way people hit it: the letters come from your font and the arrow does not exist in it, so the device substitutes the arrow from another font entirely.
Nothing breaks and nothing warns you in a normal preview, but the substitute differs by platform, so the arrow is one shape on iOS, another on Android, and another again inside an ad network’s WebView. The font manager and the build check both list any character your ad uses that the font cannot draw, with its Unicode code point. Either replace those characters, or use a font that has them.
Weights come from the file, not from a menu
The Font Weight dropdown lists only the weights the uploaded file actually contains. Most display fonts ship exactly one. Asking a browser for a weight a font does not have does not fail. It fakes it, smearing the outline into an artificial bold that renders differently on every device and usually just looks wrong. If you need a real bold, upload the bold file as its own font. Variable fonts are read properly: their whole weight range is offered.
Licensing
Embedding a font in an advertisement is a specific right. A desktop licence usually does not include it, and neither does simply owning the file. Open-licence families (SIL OFL, Apache) are safe; anything else needs a webfont or app-embedding licence. Only upload fonts you are licensed to embed.
Good to know
- An uploaded font that no object uses is not embedded and costs nothing.
- Every custom family falls back to Arial, so text still renders if a font fails to load.
- Renaming a font in the manager does not update objects already set to the old name.
- Removing a font in use makes that text fall back to Arial. The text itself is not deleted.
- Fonts are stored with the project, so collaborators and cloud drafts carry them too.
5. Particle FX
Particle FX is a particle emitter for bursts, sparkles, confetti and more. It renders live in the editor canvas and is fully exported to all 12 ad networks. Add it from the object picker. It is available in both Video and Image editors.
Presets (29)
Confetti
Sparkle
Snow
Fire
Rain
Coins
Stars
Bubbles
Explosion
Fireworks
Level Up
Electric
Impact
Smoke
Embers
Leaves
Waterfall
Aurora
Cursor Trail
Tap Burst
Hover FX
Vortex
Galaxy
Portal
Pixie Dust
Hearts
Gold Rain
Win FX
Countdown
Selecting a preset populates all emitter, shape, color, and physics fields. You can fine-tune any property after selecting a preset.
Particle Shapes (4)
Circle
Procedural circle
Square
Procedural square
Star
Procedural 5-point star
Image
Custom sprite (upload PNG)
Color Modes (4)
Solid
All particles share one color
Gradient
Particles interpolate from start color to end color over their lifetime
Random
Each particle picks a random color from the configured palette
Multi-Stop
Several color stops, each particle passing through them over its lifetime
Emitter Properties
- Position X / Y: Emitter origin on canvas
- Emission Rate: Particles emitted per second
- Emission Angle: Direction of emission (degrees, 0 = right)
- Spread: Angular spread of emission cone (degrees)
- Radius: Emit from a circle rather than a point
- Burst: Emit all particles in one burst instead of continuous stream
Physics Properties
- Speed: Initial velocity of each particle (px/s)
- Speed Variance: Random speed offset per particle
- Gravity X / Y: Constant acceleration vector (0 = no gravity)
- Lifetime: How long each particle lives (seconds)
- Lifetime Variance: Random lifetime offset per particle
- Size: Particle size at birth (px)
- Size End: Particle size at end of lifetime (0 = shrink to invisible)
- Opacity Start / End: Alpha at birth and death (0–1)
- Rotation Speed: Degrees per second per particle
Export Behavior
Every Particle FX object is built into the exported file and runs entirely inside it. Nothing is loaded from anywhere else while the ad plays. Physics, color modes, and shape types are all preserved exactly as configured in the editor.
6. Animated Sprite
Animated Sprite plays a sequence of frames as a looping animation. It takes a sprite sheet or individual frames, and you set the speed, frame range and looping. Available in both editors, and exported to every network exactly as it previews.
Source Modes
Sprite Sheet
Upload a single image with all frames arranged in a grid. Frames are read left → right, top → bottom.
- Columns: Number of columns in the grid (1–64)
- Rows: Number of rows in the grid (1–64)
- Frames: Total frame count. Set it if the last row is partially filled
Frame by Frame
Upload individual frame images in sequence. Add, replace, or remove any frame at any index.
- Upload any number of frames (PNG, JPG, WebP)
- Duration hint shown: total seconds at current FPS
- Replace or remove individual frames at any time
Playback Properties
- Speed (FPS): Frames per second (12 = game-like, 24 = film-like)
- Auto Play: Start playing immediately when the scene loads
- Start Delay (ms): Wait before first play begins
- Start Frame: First frame to play (0-indexed; clamped to available frames)
- End Frame: Last frame to play inclusive (0-indexed; clamped to available frames)
- Loop: Repeat indefinitely after completion
- Loop Count: Number of loops before stopping (0 = infinite)
- Ping-Pong: Play forward then backward (e.g. frames 0→3→2→1 endlessly)
- Reversed: Play frames in reverse order
- On Complete: What happens after the last loop: Do nothing / Show first frame / Show last frame / Hide object
Start and End Frame inputs are clamped to the total available frames. Setting start frame above end frame automatically adjusts the other value.
Fit Mode
Stretch
Frames fill the object box exactly, and may distort if the aspect ratio differs
Contain
Frames letterboxed inside the object box (no cropping, preserves ratio)
Cover
Frames fill and crop to cover the object box (no letterboxing)
Export Behavior
Sprite sheets are cut into their frames during export and every frame travels inside the file. Ping-pong, reversed, loop count, start delay, and on-complete behavior are all replicated exactly in the exported ad.
7. Parallax Background
Parallax Background is a background layer that scrolls and repeats one tileable image without end. Mobile game ads use it for endless runner floors, scrolling skies and looping coin rows. Available in both Video and Image editors; renders live in the editor canvas and exports to all 12 ad networks.
Tile Image
Upload a single seamless/tileable image. It is repeated automatically to fill the object's box in both directions, so there is no need to pre-tile or duplicate the artwork.
Layout
Fullscreen Off
Default. The tile behaves like a normal object: position, width, and height are set and resized like any other object on the canvas.
Fullscreen On
The tile always covers the entire canvas in both portrait and landscape, ignoring its stored position and size. Use it for full-bleed scrolling skies or floors behind other objects.
Scroll Properties
- Auto Scroll: Enable continuous scrolling, or disable it to show a static tiled image
- Direction presets: Left, Right, Up, Down, Diagonal (one-click common directions)
- Speed X / Speed Y (px/s): Independent horizontal and vertical scroll speed. A negative value reverses direction, and 0 keeps that axis stationary
- Tile Scale X / Y: Scales the tile size: 1.0 is natural size, below 1 shrinks tiles, above 1 enlarges them
Export Behavior
Exported as a tiling sprite driven by the shared animation ticker, matching the editor preview exactly. Scroll speed, direction, and tile scale are preserved frame-for-frame across all ad networks.
8. Shape
Shape is a procedurally drawn vector object: a filled, optionally stroked geometric shape rendered directly on the canvas with no image upload required. It supports full transforms, blend modes, opacity, pivot, FX filters, and animation presets, like any other object. Available in all three editors; in the Video editor it also has a Timed Appearance toggle (full-video or time-frame).
Shape Types
Rectangle
Sharp or rounded corners via Border Radius
Circle
A perfect circle, sized from the shorter side of the box
Ellipse
An oval that fills the whole box
Triangle
Equilateral triangle fitted to the bounding box
Star
N-point star (3–12 points); inner radius 45% of outer
Shape Properties
- Shape Type: Rectangle, Circle, Ellipse, Triangle, or Star
- Surface: Flat (a plain fill), 3D Lit (a darker lip underneath, a gloss and a fine edge, so a panel or chip looks pressable; Depth sets the lip as a percentage of the height) or Glass (a see-through face with a light rim, for panels over a photo)
- Fill Color: Solid fill color for the shape interior
- Stroke Color & Width: Outline color and thickness in pixels (set Width to 0 for no stroke)
- Border Radius: Corner rounding in pixels, Rectangle only (0 = sharp corners)
- Star Points: Number of star points, Star only (3 to 12, default 5)
All standard transform properties apply: Position, Width, Height, Rotation, Scale X/Y, Pivot X/Y, Opacity, Blend Mode, Z-index. FX filters (Drop Shadow, Glow, Outline, Blur) and animation presets also work on Shape objects.
Export Behavior
Shape looks the same in the editor preview and the exported HTML. Fill, stroke, border radius, and all transforms render identically across all 12 ad networks. Portrait and landscape positions update automatically on orientation change.
8.1 Mask
A Mask draws nothing of its own. It cuts other objects down to its shape, and the parts of them outside it are not drawn. Use it to crop a photo to a circle, punch a hole through a panel, reveal a headline with a bar that slides across it, or trace an outline around artwork by hand. Available in the Playable Ads, End Card and Video editors, and it works on any object the canvas draws: image, text, button, shape, progress bar.
Four ways to make one
Shape
Rectangle (with a corner radius), circle, oval, triangle or star. The quickest crop, and it needs no asset.
Picture
Any PNG. Choose whether its transparency or its brightness does the cutting, and place it in the box with the usual Fit and Position controls.
Custom
An outline you draw. Start from one of eight shapes, or press Convert to editable points to turn the shape you already have into one.
Scratch
The viewer paints it with a finger in Play and in the ad. With Invert on (the default for Scratch) what they paint is cut away: a scratch card. Set the Brush size and Cleared At percentage; the mask fires Scratched Away when that much is cleared.
A picture mask reads one of two things
This setting is easy to get wrong.
Alpha
Uses the picture's transparency and ignores its colour. A cut-out PNG works whatever colour the shape is: black, white or anything else. This is the default, and the right choice for almost every mask you upload.
Luminance
Uses the picture's brightness. White shows, black hides, grey shows partly. Choose this for a soft gradient fade, where the picture is a greyscale ramp rather than a cut-out.
Invert and Feather
Invert
Flips which side survives. Instead of cutting a window, the mask punches a hole: everything outside it stays and everything inside it goes.
Feather
Softens the edge from a hard line into a fade, in pixels. Note that feather is the one mask setting with a real cost: it builds a texture per masked object, so a scene with many feathered masks takes longer to draw.
Choosing what gets masked
- Objects below it: everything painted underneath (the default). Move the mask up or down the layer order to change what it catches.
- Every object in the scene: everything at once.
- Only the ones I choose: tick them by name.
Backgrounds, overlays and fullscreen parallax are left alone by the first two options, so adding a mask never makes your whole scene disappear. To mask a background, name it with the third option. An object can be cut by one mask at a time; where two overlap, the one nearer the front wins.
Drawing a custom outline
- Move a point: drag it.
- Add a point: click anywhere on the outline. It appears where you clicked, between the two points either side.
- Remove a point: Alt-click it. Three is the minimum, because two points enclose no area.
- Move the whole thing: drag inside the frame, or use the corner handles to resize.
- Smooth: rounds the corners into curves instead of straight edges.
Drag a point outside the frame and the frame resizes to fit it when you let go. The shape stays exactly where you put it, so resizing and rotating keep acting on all of it. The points are stored as proportions of the frame, so one outline serves both portrait and landscape and scales with the canvas.
A scratch card
- Put the prize on the canvas, and a cover (a shape or an image) on top of it.
- Add a Mask, set its source to Scratch, and size it over the cover.
- Under Applies To, choose Only the ones I choose and tick the cover, so only the cover is scratched away.
- On the mask's Events tab, add Scratched Away and reveal the CTA, play a burst, or go to the End Card.
Finish the job when cleared wipes the last flecks once the threshold is reached. A Scratch / Paint Mask action on any object can auto-scratch the mask in a sweep, clear it at once, or reset it. Nothing is painted while you edit; press Play to try it.
Reveal from a variable
Reveal From Variable opens the mask by a Number variable's value: from left, right, top, bottom or as an iris from the centre. 0 is fully cut away, and Fully Open At sets the value that shows everything (1 for a path drag's progress, 100 for a percentage). Pair it with a Follow the Path drag and the picture opens as the finger moves, or ease the variable with a Set Variable action for an automatic wipe.
Animating a mask
A mask takes the same Animate presets as any other object, and moving it is what turns it into a reveal. Slide a bar across a headline for a wipe; scale a circle up from nothing for an iris; drift a soft-edged shape over artwork for a spotlight. Hiding the mask (with the visibility toggle or a Show/Hide event) stops it cutting, and the objects underneath come back whole.
Export Behavior
The editor preview and the exported HTML run the same masking code, so what you see on the canvas is what ships. Masks are never clickable (a tap passes straight through to whatever is underneath), and they work in scenes and on end cards. They are not yet available inside video break overlays.
8.2 Game feel: effects, sound and four objects
The effects the game templates use, available in anything you build yourself. Four Events actions make any object react, and four objects add a guide, light, a rolling number and real physics. Every one runs the same code in the editor and in the exported ad.
Four actions, on any trigger
Feel Effect
Punch, squash, shake, wobble, bounce, pulse, spin, jelly, tada, flash or blink on any object, at four intensities. Always about the object's centre, and on top of any animation it already has.
Burst Effect
Confetti, sparkle stars, coins (flying to another object if you pick one), a shockwave ring, a flare, a glint, or reward stars (1 to 3) that land one by one and stay.
Pop Text
A label like +10 or Nice! that pops over an object and drifts away. Variables are filled in when it fires, and it can be translated per language.
Play Sound Effect
Tap, pop, coin, chime, whoosh, win and more, synthesised in the ad. No audio file, a few bytes. Silent until the viewer's first tap and while the ad is muted, like all ad sound.
Four objects
Guide Hand
Shows the one action to take, looping until the first touch. Point it at the object to touch; the hand never catches the tap itself. Turn on Spotlight what it points at to dim the rest of the screen while the hand demonstrates: as a circle (with its own size), or with Match the target's shape on, in the button's or card's own rounded outline. Dim sets how dark the rest gets.
Light Effect
Rays behind a prize, a breathing glow, sparkles, or a shine across a button. Put rays under the object they light.
Count-up
Shows its final number while you edit and counts when played. A hidden Count-up starts counting when it is revealed.
Physics Pile
Shown settled while you edit; drops in when played. The box is the floor and the walls, the top is open.
Export Behavior
What you see on the canvas is what ships. The bursts, pop text, sounds and Physics Pile add to the file size only when a project uses them. Every size is measured from the object's own box, so the effects look the same on any canvas size. A scene can also hold as many Audio objects as it needs: the first is the music bed, and each one added after it starts silent, ready for an Events action to play.
8.3 Character, Dialogue & Atmosphere
Three objects for giving an ad a story and a mood: someone with a problem on the first frame, what they say, and the air around them. All three are in the Add Object window of every editor, draw without any uploaded artwork, and look the same in Play and in the exported ad.
Character
- Character: Blob mascot, Young knight, Horned ogre, Agent
- Skin: 8 ready-made colourways, or pick any colour
- Faces right / Faces left, and Height in its box to leave room for a shadow or a speech bubble
- Animation: Idle, Win (cheer), Lose (slump), React (tap); Loop or Once, then idle; and a speed
It stands in its idle pose while you edit; press Play to watch the clip. To change the clip during the ad, add a Character Clip action on any trigger, for example cheering on Game End or reacting when the viewer taps it. A Character takes taps, drops and paths like an image.
Dialogue
- Speech: a Name on a tag, the Line, a Typing speed in letters per second, and the tail on the left or right
- Choices: up to three buttons under the line; leave one empty for none
- Colours: bubble, text, name tag, name text, choice and choice text
On its Events tab, Line Finished fires when the typing ends, and Choice 1, 2 and 3 Picked fire for each button, so a choice can lead to its own scene, set a variable, or record a click-through parameter. The name, line and choices appear in the language manager for translation.
Atmosphere
Vignette
Darkens (or tints) the edges of its box, from 0 to 100%, to pull the eye to the centre.
Ambient
Drifting snow, light dust, petals, wind streaks, with amount, speed and colour. Each one drifts the same way every time the ad plays.
Danger pulse
A glow that throbs at the edges in the colour you pick: red for a timer running out, cold blue for a freezing room.
An Atmosphere is decorative only and never takes a tap. Size it to the whole canvas for a full-screen mood, or to one panel. Show or hide it with an event, for example turning on the danger pulse when a timer reaches its last seconds.
Story intro on a game
A Game Template has its own Story intro before play option in its Properties panel: a character name, a line, a character picture and how long it shows (up to 1.5 seconds; a tap skips it). The intro shows over the game in Play and in the ad, and the line is translated in the language manager.
8.4 Timer
A countdown clock you place like any text: for a beat-the-clock challenge, a “sale ends in” line, or a timed bonus. It starts when its scene appears, so a timer on the End Card starts counting when the End Card opens. Available in all three editors.
- Duration (s) and Format: 01:30 (mm:ss), 90 (seconds), 01:00:00 (hh:mm:ss) or 1m 30s
- Color, Font Family, Font Size and Font Weight, plus the FX filters and animations every text object has
- Background plate with its own colour and corner radius
Events
- Timer End: fires when it reaches zero. Wire it to Go to Scene for a time-out, or to reveal the CTA.
- At Second: fires as the clock passes the second you name, for example a warning at 5 seconds.
For one clock over the whole ad rather than one scene, use the ad time limit instead.
9. Scrolling Text
Scrolling Text is a marquee-style ticker: text that scrolls continuously in a loop within a clipped bounding box. Unlike the regular Text object, Scrolling Text does not word-wrap: the content runs in a single line (or column for vertical directions) and repeats without a gap when it cycles off-screen. Useful for feature callouts, game score banners, news tickers, and any repeating message. Available in all three editors; in the Video editor it also has a Timed Appearance toggle.
Scroll Direction
Left
Text scrolls from right to left (default)
Right
Text scrolls from left to right
Up
Text scrolls upward
Down
Text scrolls downward
Scrolling Text Properties
- Text Content: The message to display, repeated automatically to fill the scroll loop
- Direction: Left, Right, Up, or Down
- Speed (px/s): How fast the text scrolls. Higher values scroll faster
- Gap (px): Space between the end of one repetition and the start of the next
- Separator: Optional character appended between repetitions (e.g. ★ or •)
- Background Color & Opacity: Optional color band drawn behind the text within the bounding box
- Typography: Font family, size, weight, style, color, letter spacing, drop shadow, stroke (the same controls as the Text object)
Text is clipped to the object's bounding box, so position and size control the visible window of the ticker. All standard transform properties also apply: Rotation, Scale X/Y, Opacity, Blend Mode, Z-index.
Export Behavior
Scrolling Text looks and moves the same in the editor and the exported HTML. Scroll speed, gap, separator, and all typography properties are preserved exactly across all 12 ad networks.
10. Progress Indicator
Progress answers “how far along is this?”: a loading bar, a countdown, a level meter, a checkout stepper, a fuel gauge. It is set by two independent choices: a Source (where the number comes from) and a Style (what it looks like). A time-driven ring, a score-driven stepper and a tap-driven liquid gauge are all the same object with those two menus set differently. Available in all three editors; in the Video editor it also has a Timed Appearance toggle.
Sources: where the value comes from
Time
Fills over a duration, starting when the scene appears. Duration, start offset, loop, and count-down (drain instead of fill).
Variable
Reads a global Number variable or an Events counter and maps it from Min to Max, tweening to each new value. Only Number variables and Events counters are offered, because a bar needs a number to place on a scale.
Set by Events
Starts at an authored value; any object's Events tab moves it with a Set Progress action (set / add / subtract).
Scene position
How far through the ad's scenes the viewer is (scene 3 of 5). Updates itself on every Go to Scene.
Indeterminate
No value at all: a band sweeps the track forever. For working-on-it states where there is nothing to measure.
Every source except Scene position and Indeterminate maps through a Min and Max you set, so a bar can read “lives 2 of 3” just as easily as a percentage. Values outside that range are clamped, never overflowed.
Styles
Bar
Horizontal or vertical, any corner radius, fills from either end
Ring
A full circle. Start angle and direction are configurable
Arc / Gauge
A partial dial. Set the opening and sweep in degrees
Steps
Numbered nodes joined by connectors, for multi-stage flows
Pie
A filled sector, with an optional donut hole
Liquid
An animated wave filling a circle or rounded vessel
Bar, Ring and Arc also take a Segments count, which turns any of them into a discrete meter: five bars for five lives, eight arcs for a cooldown dial. Turn on Snap to whole segments and the fill moves a segment at a time instead of part-filling the one at the head.
Appearance
- Fill mode: Solid, Gradient (start colour to end colour along the fill), or Thresholds, which gives health-bar behaviour where the colour changes as the value drops (under 25% red, under 50% amber, and so on)
- Track: Colour, opacity, and a show/hide toggle for a fill with no visible container
- Geometry: Corner radius and fill inset for bars; thickness, start angle, sweep, direction and round caps for rings and arcs; node shape, size, connector width and active-node scale for steppers; amplitude, wavelength and speed for liquid
- Markers: Milestone ticks at values you list. These same values are the choices offered by the Progress Milestone trigger, so the tick drawn on the bar and the moment an event fires can never disagree
- Leading knob: A dot at the head of the fill, with its own radius, colour and border
- Shimmer & stripes: A travelling highlight and an animated barber-pole overlay, both with speed, width and opacity controls
The fill is always clipped to the exact shape of its track, so it takes the container's silhouette at any corner radius, any segment count, and with every overlay. It can never render outside the shape it is filling.
Label
An optional readout with its own font, colour, outline and shadow. Position it in the centre, above, below, either side, inside at the head of the fill, or following the head as it moves.
- Percent: 64%
- Fraction: 64 / 100
- Value: 64, in your Min…Max units
- Steps: Step 3 of 5
- Elapsed / Remaining / Seconds left: 00:06, 00:04, 4s (Time source)
- Custom: your own wording around any of the tokens below
The custom template accepts {percent}, {value}, {total}, {min}, {step}, {steps}, {elapsed}, {remaining} and {seconds}. Click a token to insert it and the panel shows a live preview of the result. It also warns you if you type a token that does not exist, or one this bar's Source can never give a moving value to.
Motion
- Value tween: How long the bar takes to catch up when its value jumps, in milliseconds. It is a real duration: set 400ms and it arrives in 400ms. Set 0 to snap instantly.
- Animate in on entry: Fills from empty to the current value when the scene appears, with its own duration, delay and easing
- Complete at: The percentage that counts as finished, and where the Progress Complete trigger fires
A Time source animates by definition, so tween and entry animation apply only to the value-driven sources.
Events
A Progress object can also fire events. Two triggers are available on its own Events tab:
- Progress Complete: fires once, when the bar reaches its Complete-at percentage. Wire it to reveal a CTA, switch scene, or play a sound.
- Progress Milestone: fires the first time the bar reaches one of its markers. The dropdown lists the markers you have drawn on the bar, so there is no second number to keep in sync.
To drive a bar from elsewhere, use the Set Progress action on any other object, or bind the bar to a variable and let a Set Variable action move it. Both live in the Events tab; see Section 19 for the variable store itself.
Export Behavior
Progress looks the same in the editor preview and the exported HTML. Every style, colour ramp, marker and label renders pixel-for-pixel identically, in both orientations, across all 12 ad networks. Timing, tweening and triggers behave the same way in both: the value the preview shows at a given moment is the value the shipped ad shows.
11. Input Controls
Four objects that let the ad ask a question: Slider, Toggle, Stepper and Choice Chips. Each one writes its value to a Variable. Once the answer is in a variable, any text can print it, any object can be shown or hidden by it, a Progress bar can be filled by it, a calculation can use it, and the click-through URL can carry it as a lead attribute.
The control never owns the value
The variable is the state; the control is a view of it. Two controls bound to the same variable stay in step automatically, and a Set Variable action anywhere in the ad moves them both.
The four controls
Slider
Drag or tap along a track. Min, Max and an optional Step (set Step to 0 for a continuous slide). Horizontal or vertical.
Toggle
On or off. Writes true/false to a Boolean variable, or 1/0 if you bind it to a Number.
Stepper
Minus, a read-out, plus. Moves by one Step per tap and clamps at both ends. The middle is deliberately inert, so a mis-tap does nothing.
Choice Chips
A row of options, one of which is chosen. Type them in as a comma-separated line, or read them from a table.
A Slider is a Progress bar you can grab
Sliders share every Progress style: bar, ring, arc, segments, gradients, colour thresholds, labels, the leading knob. Its appearance is edited with the Progress controls rather than a second, subtly different set, which also means every style Progress gains in future, a Slider gains too.
Choice Chips
- Options: a comma-separated line, such as Small, Medium, Large
- Different value from label: write value=Label. S=Small shows “Small” and records S, which is usually what a click-through URL wants
- From a table: point it at a data table and pick which column shows and which column is recorded
- Layout: one row, or wrapped at a set number per row. Chips share the object's width equally, so drag the object wider to give them more room
- Two looks: a full set of colours for the unselected state and another for the chosen one
Binding rules
The variable picker only offers variables the control can actually drive: Number for a Slider, Stepper or Chips, Boolean for a Toggle. Other types are left out because the binding would never work. If nothing is bound, the panel says so: the control still moves, but nothing in the ad can read it.
Export Behavior
Every control is drawn and driven by the same code in the editor preview and the exported HTML (the same value maths, the same snapping, the same clamping), verified by driving real pointer input at real coordinates in both and comparing the resulting variable. Single-touch only, which is what every ad network expects.
12. Repeater & Data Tables
Design one card. Fill in a small table. The Repeater draws that card once per row and fills in the blanks. Six plans is one card design and six rows, not six hand-built cards, so changing a price is one table cell, and adding a plan is one row.
How to build one
- Make a table. In the Repeater's panel, click + New. Name the columns after the things that change (name, price, image) and add a row per card.
- Design one card. Draw it anywhere on the canvas: a background shape, some text, an image. Select the pieces and group them.
- Point the Repeater at both. Choose the table and the group. The group itself stops drawing; only the repeated copies appear.
- Put the columns into the card. Type {name}, {price} into any text, image or link field in the card. {index} gives the row number.
Layout
Grid
Wraps onto rows at the column count you set
Stack
One card per row, top to bottom
Rail
A single row running past the edge, for a horizontal strip
Card size, gap and a maximum row count are all set on the Repeater. Max rows 0 shows every row.
Making the cards choosable
Turn on Cards are choosable, pick a variable and the column whose value should be recorded. Tapping a card writes that row's value, and the whole card is one target, so a tap in the gap between the price and the title still counts.
For a chosen-state look, set Chosen surface and Chosen border, and pick a Mark on the chosen card: a dot, ring, tick, bar or ribbon. Give it a Link Parameter name and the chosen row's value also rides the click-through URL.
Why this also makes the file smaller
Six hand-placed cards are six separate compositions to compress. One card design plus a six-row table is one composition and some text, which matters against the 2 MB limit some networks put on the main file far more than any other choice you make.
Export Behavior
A Repeater is resolved into ordinary objects before anything is drawn, in the editor and in the export alike, so a repeated card supports filters, animations and events exactly like any hand-placed one, and the preview and the ad are pixel-identical in both orientations.
13. Overlay
Overlay is a full-screen color tint with adjustable transparency: a quick way to darken or lighten an entire scene, dim everything behind a focused element, or fade a moment to black. It always covers the full canvas and sits above other objects by default; it is purely decorative and never intercepts clicks, so a CTA button underneath it always stays tappable. Available in all three editors; Entry/Exit Fade animation is only available in the Video editor (it requires a video timeline).
Color & Opacity
Pick any color with the color picker. Strength is controlled by the same Opacity slider every object has, under Visual Effects, and defaults to a 50% black scrim.
Timed Appearance
Set Appearance to Time frame to show the overlay only between a start and end time in the video, instead of for the whole scene.
Entry & Exit Fade
- Found on the Animate tab. It only requires Time frame appearance, since the fades are anchored to its start and end time
- Entry Fade: fades in from transparent up to the configured opacity over a set duration, starting at the window's start time
- Exit Fade: fades back down to transparent over a set duration, finishing exactly at the window's end time
- Each direction has its own Duration (ms) and Easing. There is no loop option, since a one-shot fade in/out doesn't repeat
Export Behavior
Renders identically in every exported ad network. Solid color fill, opacity, and Entry/Exit Fade timing are all preserved frame-for-frame against the video's own clock.
14. Game Template & CTA Button
Game Template (Playable Ads Maker only)
Embed a playable mini-game inside your ad, with no game logic to write: choose one of 111 genres, configure it in the Properties panel, and the game is exported inside the ad, running identically on every ad network. The quickest start is a prebuilt game template from the start window, which every plan can re-skin and export; placing a Game Template or Interactive Module into a project of your own, or adding scenes and events to a prebuilt template, is part of Build From Scratch on the Agency plan.
How to Add
- Open Add New Object → Game Templates section
- Choose a genre card (Match-3, Runner, …)
- Only one Game Template is allowed per scene
- Configure the game in the Properties panel
Behavior
- The game runs full-size within the canvas in the exported ad
- Winning or losing opens the End Card that matches the outcome (a win card and a lose card, or one card for both)
- Sound effects, a guide hand that demonstrates the move, win/lose states: all included, plus an optional Story intro before play (see 8.3)
- Difficulty, speed, colors, and round duration are configurable
Game Templates are exclusive to the Playable Ads Maker (Image editor). They are not available in the Video Playable Maker or End Cards Maker.
CTA Button & CTA Button with Text
A dedicated ad-redirect button that routes to your iOS/Android store URLs without per-object link configuration. CTA Buttons look identical to regular Buttons but are wired to the same redirect mechanism as the End Card: MRAID-aware, with automatic iOS/Android device detection.
Differences vs Regular Button
- No per-object link field; it uses the export modal's iOS/Android URLs automatically
- No Events tab, because the redirect is the only action, hardwired
- Opens the store the way each ad network expects, so the click is counted by the network
- Same visual properties as a regular Button (image, text, colors, borders, FX, animations)
Limits
- Video / End Card editor: one CTA Button per scene maximum
- Image editor: one CTA Button across the entire project
- Mutual exclusivity: adding a CTA Button disables the "Add End Card" option, and vice-versa, so there is only one primary call-to-action mechanism per ad
- Available in all three editors
Corner install pill
In a CTA Button's Properties, the Style box turns it into a small, round, pulsing install button in one corner: Corner install pill · top left, top right, bottom left or bottom right. It stays on screen during play, so a viewer who is already convinced can install without finishing the game. Tick Hide on End Cards so it steps aside on any end card screen. Put it in a corner the game's HUD leaves free. Back to a normal CTA Button undoes it.
15. Interactive Modules
Interactive Modules are the non-game half of the same plugin system that runs Game Templates. Instead of a round you win or lose, they run a short guided interaction (answering a few questions, building a product, turning something over in your hands) and end by handing the person a result. They live under Add New Object → Interactive Modules, alongside the game genres.
They follow the same rules as a Game Template: Playable Ads Maker (Image editor) only, one per scene, exported inside the ad itself, and configured entirely from the Properties panel. Nothing about them reaches the network at runtime (see Reporting without network calls below).
Three modules in depth
Quiz / Finder
- 1–8 questions, each with its own answers and artwork
- Two scoring models: buckets (each answer votes for a result) or points (answers carry a score, bands map to results)
- Optional answer shuffle, a Back control, per-answer badges, and four progress styles
- Ends on a recommendation card built from the result it reached
- 71 settings across 12 tabs
Configurator
- Up to 5 option groups: paint, wheels, trim, finish, whatever the product has
- Each group drives the art by layer (swap an image), tint (recolour one), or none (spec only)
- 360° spin with momentum and optional snap, on either axis
- Live price that recalculates as options change
- 62 settings across 12 tabs
- For a product that exists as a 3D model, configure it in 3D Product instead. It is the same idea, a real mesh rather than layered art
3D Product
- A real
.glbmodel the viewer can turn in their hands - Full orbit, momentum, zoom, contact shadow
- Up to 4 finish rows recolouring named materials and 4 part rows swapping which pieces are fitted, with live pricing
- The model is read on import, so every one of those binds from a dropdown, with nothing to type
- 51 settings across 11 tabs, plus 7 per finish row and 4 (+3 per choice) per part row
- Full reference: Section 16
Those three have the most settings, so they get the space here. The library has 19 modules in all, and the rest work the same way (one object, configured from the Properties panel, handing its result to the end card): Swipe Picker, Price Simulator, Bundle Builder, Catch & Win, Tap to Pay, Before / After, Unboxing, Prize Reel, Card Pull, Route Planner, Beat Tap, Hold to Fill, Sort It, Trace & Cut, Book a Slot and Ride the Line. Each prebuilt brand template is built on one of them, so opening a template is the quickest way to see one working.
Carrying the result into the end card
A module finishes knowing what the person chose, and there are two ways to put that on the end card. Use whichever fits; they can be mixed on the same card.
1 · Print it: tokens
Write the token straight into any Text object and it is replaced with the real value as the end card draws.
- Configurator:
{1},{2}… for each option group, and{price}for the running total - 3D Product:
{finish} - Quiz / Finder:
{result} - Best when only the words change: a build sheet, a spec line, a total
2 · Swap it: Show For Result
Stack one variant per outcome in the same spot and give each its result number. Exactly one is drawn.
- Set it in the General section of the Properties panel
- Best when more than the words change: a different colour swatch, a different photo
- Offered by Quiz / Finder and 3D Product, which resolve to one outcome
- A Configurator builds a combination rather than one outcome, so it uses tokens instead
The editor fills tokens with the module's default selections while you work, so the card is composed against realistic copy instead of raw braces, and that is exactly what the ad shows before anyone touches a control. A token nothing recognises is left visible rather than blanked, so a typo is obvious instead of silently deleting the line.
The choice is carried across to the end card automatically, and works identically in the editor preview and the exported ad.
Reporting without network calls
Ad networks reject creatives that call out to anything at runtime. A playable ships as one offline bundle and is reviewed on that basis. So a module has no analytics endpoint to post to, and there is deliberately no setting to add one.
What a module can do is attach the choice to the click-through URL. The selection is appended as a parameter, so the destination opens on what the person picked and your existing attribution tooling reports it. It is the same mechanism described in Deep Link. Values are restricted to letters, digits, _ . -, so free text can never ride along on a URL.
Sizing and orientation
A module is placed and resized like any other object, in both orientations, and redraws live while you drag its handles. The 3D Product module also declares an aspect ratio: its box can be locked to that ratio so the model is never distorted by a resize. Every module lays out from its own box, so a portrait and a landscape composition can differ completely without duplicating the module.
16. 3D Product
3D Product puts a real .glb model inside the ad and lets the viewer turn it over, tilt it, zoom in and configure it: recolouring named materials on the mesh, swapping which parts are fitted, with the price totalling as they choose. It is an Interactive Module, so it follows the rules in Section 15: Playable Ads Maker (Image editor) only, one per scene, configured from the Properties panel. Unlike every other object it keeps drawing in the editor outside Play mode, so you can frame the model and judge its lighting while you position it.
You do not need to know what is inside your model. It is read the moment you pick it, and its material, part and clip names are listed for you and offered as dropdowns throughout the panel (see What is in your model below).
Property Tabs (11)
Model
The .glb, its size in frame and starting angle
Camera
Field of view and distance
Spin
Drag, momentum, turntable, zoom
Environment
Lighting, background, shadow, tone mapping
Finishes
Colour option rows, their swatches and labels
Parts
Rows that swap which piece of the model is fitted
Pricing
A base price and a delta per option
General
Spec text, hand-over to the end card
Pointer
The tap/drag hint
Sounds
Tap sound
Link
Recording the viewer's choices on the click URL
Model
- Model: one prepared
.glb, uploaded through the asset picker - Size in Frame: how much of the box the model fills. Framing is recalculated whenever you resize the object, so it never crops
- Vertical Offset: nudge the model up or down within its box
- Start Angle / Start Height: the angle the ad opens on. Leave Start Angle alone and the module picks the widest side of the model automatically; setting it explicitly opts out of that
- Animation Clip: which clip baked into the file plays on load, chosen from a list of the clips your model actually contains. Leave it on First clip in the file for a model that only has one
- Loop the Clip / Play Clip on Tap: whether it repeats, or waits for a tap instead
What is in your model
A .glb is opaque. Open one in a browser and there is nothing to see but the product. But the finishes, parts and animation in this module all bind to things inside it by name, so those names have to come from somewhere. They are read out of the file the moment you choose it, before any upload.
- Materials: the surfaces a Finishes row can recolour
- Parts: the named pieces a Parts row can show or hide
- Animation clips: what the Animation Clip field can play
Every one of those fields is then a dropdown filled from your model, not a box to type a name into. There is nothing to spell or look up in a 3D tool, and you cannot bind to a surface that is not there. Swap the model for a different one and the lists refresh with it. If a choice you had already made no longer exists in the new file, it is kept and marked not in this model rather than quietly cleared.
A model with no problems imports without a dialog. You are only stopped when there is a problem: the model is over budget, or it cannot be used at all. Either way the Model tab always shows a line summarising what was found.
If your model has no named materials or parts, there is nothing to bind to and the Model tab says so. Naming them is done in whatever tool the model was made in. In Blender, the material and object names are exactly what appear here.
Rotation & Zoom (Spin)
The model always stays the right way up, however far and however fast it is dragged. It never tumbles or ends up inverted. Horizontal drag turns it all the way round; vertical drag looks down on it or up at it, within a limit you set.
- Drag to Rotate: master toggle for touch rotation
- Drag Sensitivity: degrees turned per pixel dragged
- Smoothing: how much the motion eases behind the finger, and it feels the same on a fast phone and a slow one
- Momentum: how long it keeps spinning after the finger lifts
- Allow Tilting / Tilt Limit: enable vertical orbit, and how far above and below the horizon it may go
- Turntable Until Touched: slow idle rotation that invites the first touch
- Turntable Speed: degrees per second of that idle spin
- Resume After Idle (s): seconds of no input before the turntable starts again, so the drag does not kill it permanently
- Allow Zoom / Closest / Furthest: pinch-to-zoom and its range, as multiples of the fitted distance
Lighting presets (3)
Studio
Even, neutral light for a product-photography look
Soft
Diffuse and low-contrast, for matte and fabric surfaces
Dramatic
Strong key with deep falloff, for hard and glossy surfaces
Tone Mapping is separately switchable between None and ACES. ACES keeps bright highlights from blowing out on glossy materials.
Environment
- Reflection Strength: how much of the environment the surfaces mirror
- Key Light: brightness of the main light
- Exposure: overall brightness after tone mapping
- Background: a flat colour behind the model; the rest of the scene shows through around it
- Contact Shadow: a soft shadow under the model that grounds it
- Shadow Strength / Shadow Spread: how dark and how wide that shadow is. It fades out as the camera drops toward the horizon, so it never reads as a grey disc floating behind the product
Option groups (Finishes)
Set Groups to how many parts of the product are configurable (up to four). Each group owns one named material on the mesh and gets its own row of swatches, so a chair's frame and its upholstery move independently and the same file serves every combination. Nothing is swapped or reloaded; the mesh keeps its own glass, metal and trim untouched.
- Groups: how many option rows the viewer gets (1–4)
- Group N Name: shown above the row, e.g. Frame or Upholstery
- Group N Material: which surface this row recolours, picked from the materials found in your model. Every material is the blank option and is wrong on anything with glass or tyres
- Group N Colours / Names: comma-separated, paired in order
- Group N Starts On: which option the ad opens with
- Group N Link Parameter: the key this group rides the click URL under
- Show the Picker / Name the Finish: whether swatches and the chosen names are drawn
- Swatch Shape: rounded, circle or square
- Swatch Background, Selection Ring, Label Colour, Font: styling for the picker
Materials are cloned per group before anything is recoloured. Game-ready models routinely share one material between parts, and without that step recolouring a frame would repaint the cushion with it.
Option rows (Parts)
A Finishes row changes what a surface is coloured; a Parts row changes what is fitted. Set Part Rows to how many pieces of the product the viewer can swap (up to four), and each row gets its own line of named buttons under the model. Choosing one shows that piece and hides the others in the same row. Wheels: Sport or Touring. Roof: solid, glass or open.
- Part Rows: how many swap rows the viewer gets (0 turns parts off entirely)
- Part N Name: shown above the row, e.g. Wheels or Roof
- Part N Choices: how many buttons that row has (1–4)
- Part N · Choice M Shows: which piece of the model this button fits, picked from the parts found in your model
- Part N · Choice M Name: what the button says
- Part N Starts On: which choice the ad opens with
- Part N Link Parameter: the key this row rides the click URL under
A choice set to Nothing hides the row's pieces instead of fitting one, which is how an optional extra is expressed. A two-choice row of Nothing and Spoiler is an on/off switch, with nothing extra to set up.
Parts behave like finishes everywhere else: they carry a price delta, they are written into a {finish}-style Text object, and they ride the click-through URL. Nothing is loaded or swapped at runtime. Every variant is already in the file, so switching is instant.
The camera is framed around the model with every variant fitted, so switching to a taller or wider one can never crop it, and the framing never jumps while the viewer is configuring. Pieces no row mentions are never touched.
Pricing
A base price plus a delta per option. The total recalculates on every choice and lands in a Text object carrying {price}, so the viewer watches the figure move as they build, which is most of what makes a configurator persuasive.
- Show a Price: the master switch. When it is off, the module never writes a total
- Base Price / Currency Symbol: what the product starts at
- Group N · Price Deltas: one per colour, added to the base. e.g.
0,60,90 - Part N · Choice M · Price Delta: what fitting that part adds, set per choice
- Price Text Object: a Text object carrying
{price}
Finishing & hand-over
- Finish Text Object: a Text object elsewhere in the scene that is rewritten with the chosen finish as the viewer picks
- Finish After a Pick / Finish Delay: hand over to the End Card once a finish is chosen, after a pause. The delay restarts on each new pick, so changing their mind never cuts the ad short
- Show Hint / Delay: an animated hand prompting the first drag, after a period of no input
- Record the Finish on the Link / Link Parameter: append the viewer's choices (finishes and parts alike) to the click-through URL, each under a key you choose
The chosen finish is also published as the scene result, so end-card objects using Show For Result can change with it (see Section 15).
Model budget
A 3D ad carries more weight than a flat one before the model is even added, and a model costs more inside the ad than its size on disk suggests. Networks cap how large a playable may be (Meta most tightly, at 2 MB), so the share left for the model is small, and a model that looks reasonable in a 3D tool is often well over it.
150,000
triangles
12
materials
8
textures
0.96 MB
file size
The file-size figure is worked back from the tightest network cap. A model is base64-encoded into the HTML, which costs a third more than its size on disk, so 0.96 MB on disk is about 1.28 MB in the ad, and that plus the rest of your creative is what has to fit inside Meta's 2 MB. Staying inside this budget is therefore the same thing as passing every network.
The file is measured the instant you pick it, with no upload and no wait. If it is over, you are shown which lines are over, what the model really costs inside the finished ad, and which networks would reject the export. Being over budget warns and never blocks: an over-budget model that renders still beats an import that refuses.
There is one exception. A model saved with compressed geometry or textures (Draco, meshopt or KTX2) needs a decoder to be shipped alongside it, and that decoder would cost more than the model it saves. Those files are declined at import with the reason, rather than being accepted and then rendering nothing. Re-export from your 3D tool with compression turned off (in Blender: glTF Binary with Draco disabled) and it will import.
Sizing & aspect lock
The module is placed and resized like any other object, separately in portrait and landscape, and re-frames the model live while you drag its handles. It also declares a preferred aspect ratio, and its box can be locked to that ratio so a resize can never squash the model. Framing is measured from the model itself, so it stays correctly framed at any angle and in any box shape.
Export Behavior
Everything the model needs travels inside the exported file. Nothing is fetched while the ad plays, which is the rule every network reviews against. Ads without a 3D Product object carry none of that extra weight. Rotation, momentum, zoom, finishes, shadow and tone mapping all behave identically in the editor preview and the exported ad.
17. Animations
Adding Animations
- Select an object on canvas
- Go to the Animate tab in the right panel
- Click a preset, or enable an animation type and set it by hand
- Set duration, delay, and easing
- Press Play (or Space) to preview live on canvas
Presets: Entry, Idle and Exit
The Animate tab opens on one-click presets in three groups. An object can carry one of each at once: arrive, keep moving, then leave.
Entry (7)
Fade In, Pop In, Bounce In, Slide Left, Slide Right, Slide Up, Slide Down. Plays when the scene appears, or when the object is revealed later by a Show/Hide action or a Show If Variable condition.
Idle (Loop) (6)
Pulse, Float, Shake, Spin, Glow, Color. Repeats for as long as the object is on screen, which suits a CTA or a prize.
Exit (6)
Fade Out, Shrink, Slide Left, Slide Right, Slide Up, Slide Down. Its Delay sets when the exit starts, counted from load (default 2000 ms).
Preset Settings
- Duration and Delay, in milliseconds
- Easing: pick a curve, or shape your own in the curve editor below
- Loop and Yoyo (play forward then back) for the idle presets
- Every active animation is listed at the top of the tab, where you can tune or remove it
Advanced Animations (Image, Button, Text)
In addition to entrance animations, objects support continuous animated properties. Each has its own sub-tab.
- Style: Tint (from/to hex), blur (from/to px), brightness (from/to). Duration, easing, loop.
- Position: Move from (x1,y1) to (x2,y2). Duration, easing, loop, direction (normal/reverse/alternate).
- Scale: Scale X and Y from/to. Duration, easing, loop.
- Transparency: Alpha from/to (0–1). Duration, easing, loop.
- Rotation: Rotate from/to degrees. Duration, easing, loop, direction.
Per-Character Text Animation (Text only)
Text objects have a second animation mode in the Presets sub-tab, below the regular entrance presets: each character animates individually with a staggered delay instead of the whole text block moving as one unit. Mutually exclusive with the whole-object entrance/loop animations above. Applying one clears the other.
Letter Bounce
Each character scales up from nothing with a springy overshoot
Letter Wave
Characters rise into place like a gentle wave settling
Typewriter
Characters snap into view left-to-right, like text being typed
Flip In
Characters tumble in via a quick rotation
Drop In
Characters fall from above and land with a springy bounce
Scramble
Characters reveal in randomized order with a quick jitter
Wave Loop
Characters fade in once, then bob continuously: a looping idle effect rather than a one-time entrance
Each preset exposes Per-Character Duration, Stagger (extra delay added per character), Start Delay, and Easing. Fine-tune any preset after selecting it, and the canvas preview updates live as you adjust the values.
Animation Curve Editor
Every animation type (Position, Scale, Alpha, Rotation, Style) has an Animation Curve sub-tab that gives you Catmull-Rom spline control over how the value changes over time. Click within the curve graph to add control points; drag to reshape; double-click to delete. Points cannot be dragged outside the curve container.
8 Built-In Presets
- Linear: Constant speed (a straight diagonal)
- Ease In: Starts slow, ends fast
- Ease Out: Starts fast, ends slow
- In-Out: Slow → fast → slow
- Back Out: Slight overshoot before settling
- Elastic: Springy oscillation around the target
- Bounce: Bounces at the end like a dropped ball
- Snap: Snaps quickly then settles with a tiny overshoot
Interacting with the Curve
- Click background: adds a new control point where you clicked
- Drag point: moves it; x is clamped between its neighbours; y is clamped to the visible graph area
- Double-click point: deletes it (anchor points are locked)
- Point list: numeric x/y inputs appear below the graph for precision editing
- Reset: reverts to the default Linear curve
- First and last points (anchors) are locked at (0,0) and (1,1) and cannot be moved or deleted
Each animation type stores its own independent curve, so you can change the Position curve without affecting the Alpha curve. The curve is sampled at export time to generate the exact easing used in the exported HTML.
FX Filters (Image, Button, Text)
The Properties panel's FX tab applies non-destructive visual filters on top of an object, and multiple filters stack. Every filter renders the same in the editor preview and the exported HTML, and none needs an extra library. A few (Shockwave, God Rays, Reflection, Glitch) animate automatically on their own, so there is no need to add a separate animation.
Shadow & Glow
- Drop Shadow: Color, alpha, blur, distance, angle
- Outline: Color, thickness
- Glow: Color, strength, distance
- Bevel: Thickness, light/shadow alpha
- Bloom: Threshold, brightness, blur (extracts and glows bright areas)
- Bloom (Simple): Single strength slider
- Color Overlay: Solid color + alpha tint
Color & Tone
- Color Adjust: Brightness, contrast, saturation, hue rotate, plus grayscale/sepia/night/invert toggles
- Adjustment: Brightness, contrast, saturation, gamma
- Gradient: Two-color linear gradient overlay with angle
- Color Replace: Swap one color for another, with tolerance
- Noise: Film-grain style random noise, 0–1 amount
Blur
- Blur: Simple Gaussian blur strength
- Backdrop Blur: Blurs whatever is behind the object for a frosted-glass look
- Motion Blur: Directional blur via velocity X/Y
- Zoom Blur: Radial blur outward from center, with inner/outer radius
- Radial Blur: Rotational blur around center, with angle and radius
Distortion
- Twist: Swirl distortion with radius and angle
- Bulge / Pinch: Lens bulge (positive strength) or pinch (negative), with radius
- Reflection: Animated water-ripple reflection: boundary, amplitude, wave length
- Shockwave: Animated rippling shockwave: amplitude, wavelength, speed
- God Rays: Animated light beams: angle, gain, density
Stylize
- Glitch / CRT: Animated RGB-slice glitch: slices, offset
- Pixelate: Chunky pixel-block size
- RGB Split: Chromatic-aberration channel offset amount
18. Multi-Scene Navigation, Transitions & Events
Build multi-screen playable ads with scene-to-scene navigation, animated transitions, and the full interactive logic below. All of this is exclusive to the Image editor's blank-canvas mode. The End Card template mode does not expose scene management or an Events tab. The Video editor has no scene management either, but does have its own scoped Events tab on image/button objects (see Section 21).
Managing Scenes
Add, duplicate, reorder, and delete scenes from the left panel. Each scene has its own objects, background, and entry transition. Use a Go to Scene action on any event to link scenes together for branching flows, multi-step interactions, or a dedicated end screen.
Scene Entry Transitions (4 types)
Crossfade
Fades the outgoing scene into the new one
Wipe / Slide
Slides the new scene in: left, right, up, or down
Zoom Blur
Zooms and blurs while fading to the next scene
Pixelate
Pixelates out the previous scene before reveal
Set per scene: transition type, duration (100–2000ms), and direction (Wipe/Slide only). The exported HTML matches the editor preview exactly.
Interactive Events
Any image, button, text, shape, character and most interactive objects can run one or more actions when triggered. Open the Events tab (⚡) in the Properties panel to add a trigger and chain actions.
Triggers
- Tap: Single tap/click on the object
- Double Tap: Two taps within the window
- Hold: Press and hold for a configurable duration
- Follow the Path: Drag the object along a route you draw (see 18.1)
- Dropped On: Released over a target object you name
- Animation Complete: Fires when the object's animation finishes
- Burst Complete: Fires when a Particle FX burst finishes
- Timer End / Timer at Second: On a Timer object, when it runs out or passes a second you name
- Progress Complete: Fires when a Progress object reaches its Complete-at value
- Progress Milestone: Fires the first time a Progress object reaches one of its markers
- After a Delay: Fires on its own a set time after the scene appears, with no touch needed
- Value Changed / Switched On / Switched Off: On a Slider, Stepper or Toggle, when the viewer changes it
- Count Finished: When a Count-up reaches its number
- Pile Settled: When a Physics Pile comes to rest
- Line Finished / Choice 1, 2, 3 Picked: On a Dialogue, when its line has typed out or a choice is tapped
- Scratched Away: On a Scratch mask, when enough of it is cleared
- Game End and game milestones: On a Game Template or Interactive Module: valid and invalid moves, combos, last piece, time running out and more, depending on the genre
Which triggers appear depends on the object: the five gestures and After a Delay on images, buttons, text, shapes and characters; Animation Complete on animated sprites; Burst Complete on particles; the two Progress triggers on a Progress object; Timer triggers on a Timer; the control, Count-up, Physics Pile, Dialogue and mask triggers on their own objects. Game Templates add their own genre-specific milestones. Carrying a drop or path rule is what makes an object draggable. There is no separate switch to forget.
Swipe, Flick and Drag Start / Drag End have been replaced by Follow the Path. A straight route is a swipe, with a visible track and a handle that stays under the finger; an arc is a dial; a loop is a rotary. Five overlapping triggers that each answered “which way did the finger go?” collapse into one that answers “did the finger go where I said?”, which is easier to set up and covers more gestures.
Actions
- Go to Scene: Navigate to another scene, with its entry transition
- Show / Hide Object: Toggle visibility of any target object
- Move To: Animate an object to new X/Y with duration & easing
- Swap Image: Replace an image object's source
- Set Text: Update a text object's content
- Set Variable: Set, add to, toggle or randomise any declared variable
- Set Progress: Set, add to or subtract from a Progress object's value
- Compute: Work a variable out with a formula (see Section 20)
- Look Up: Turn a number into a tier using a table of ranges
- Set Link Parameter: Record a choice to carry into the click-through URL
- Control Animated Sprite: Play, pause, or restart a sprite
- Control Audio: Play, pause, or stop an Audio object
- Select Option: Pick an option on a quiz, configurator or 3D Product from a button of your own
- Feel Effect, Burst Effect, Pop Text, Play Sound Effect: Make any object react (see 8.2)
- Scratch / Paint Mask: Auto-scratch, clear or reset a Scratch mask (see 8.1)
- Character Clip: Play a Character's win, lose, react or idle clip (see 8.3)
Every action can carry a condition (“only if score ≥ 10”), so one trigger can do different things depending on what happened earlier. Set Variable supersedes the older Show / Increment Counter pair, which still works in projects that use it.
Each trigger can run multiple actions in sequence, and actions can target any object in the scene, not just the one that was tapped.
18.1 Follow the Path
You draw the route, and the viewer has to drag the object along it. Because the route is whatever you draw, one trigger covers swipe-to-pay, a dial, a rotary, a slider on a curve, tracing a shape, or running a vehicle down a line on a map. The object also stays under the finger the whole way rather than jumping at the end.
Available on image, button, text and shape objects. Open the Events tab (⚡), add a trigger, and choose Follow the path.
Drawing the route
- Presets:
Line →,Line ←,Line ↓,Line ↑,ArcandCircle, each built around the object and sized to it, so one click gives you a working route - Custom…: click the canvas to add points, drag any point to move it, and click Done when the shape is right. There is no limit on how many points a route may have.
- clear: removes the route. The panel shows a live point count, and says no route yet in amber while a path rule has fewer than two points, because such a rule can never fire.
While an object is selected the canvas draws the route as a dashed line with a translucent ribbon around it. That ribbon is the tolerance below, so “how close must I stay?” is visible while you author rather than a number you have to imagine.
Settings
| Setting | What it does | Default |
|---|---|---|
| Stay within | How far off the route the finger may stray, in pixels, before the drag is dropped. Straying does not snap the object back onto the line. The drag simply stops, so a viewer who has left the route is not fought with. | 60px |
| Fires at | How far along the route counts as done. Below 100% the actions run before the very end, which is usually what you want: a finger a few pixels short has plainly finished the gesture. | 90% |
| The object follows the path | On: the object rides the route, centred on the line, and can only move along it. Off (trace): the object stays put and only the finger travels. Use it for tracing a shape or signing a name. | On |
| Show the path to the viewer | Draws the track in the ad, and fills it in as the drag advances. Turn it off for a gesture the viewer is meant to discover. | On |
| A hand travels the path | An animated hint that walks the route on a loop and retires for good at the first touch, with its own size. A drawn line says where; something moving along it says how. | Off |
| Progress writes | Names a variable that receives 0–1 continuously as the drag advances. | None |
A route is a curved slider
Progress writes is what turns this from a gesture into an input. The value lands in the same variable store that Compute and Look Up read and that a Progress bar can be bound to, so “drag along the arc to set the amount” needs nothing else:
- Bind a Progress bar to the same variable and it fills as the drag advances
- Feed it to a Compute formula to price whatever the drag is choosing
- Print it with a
{token}in any text object - Gate an object on it, so something appears only once the drag is far enough
What the viewer experiences
- The object is centred on the line and travels only along it. It cannot be dragged off into empty space
- An incomplete drag springs back home, so “not finished” never looks like “finished”
- Reaching the fires-at point runs the actions exactly once, however the drag continues afterwards
- A handle with an idle animation keeps breathing while it is carried, and the idle motion and the finger do not fight each other
Both orientations
Draw the route once in portrait and landscape gets it automatically. It is rotated, so a left-to-right drag stays a left-to-right drag when the phone turns. Draw a landscape route explicitly and that one is used instead. Routes, tolerance, track width and hint size all scale with the canvas, so a template dropped onto a 720×1280 or 1080×1920 project keeps the same gesture at the same proportions.
Editor and export run the same code
The route maths, the tolerance test, the track, the travelling hand and the spring-back are one shared module that the exporter writes into the generated HTML, so the shipped ad runs the same code the preview does. What you drag in the editor is what the viewer drags in the ad, on every network, in both orientations.
Export Behavior
Scene transitions and events are built into the exported ad, with nothing to load at runtime. Both behave identically across all 12 ad networks, and a transition lands on exactly the frame the editor previewed.
19. Variables (Global State)
Variables are named values that live for one play-through of the ad and can be read or written from anywhere in it. A tap counted in the first scene can change the wording on the End Card two scenes later, decide whether a badge is visible, and fill a progress bar, all from the same value and with no code. Open the Variables manager from the editor toolbar to declare them.
There is exactly one scope: the whole ad
A variable is project-wide, not scene-local. Writing to score in a game scene and reading it on the End Card is not a special cross-scene feature to switch on. It is the only way the store works. There is no per-scene namespace and no way to shadow a name, so a name means the same thing everywhere in the ad, for the entire play-through.
Declaring a variable
Each variable has a name, a type, and a starting value. Names are restricted to letters, digits and underscores, because the name is the token you type to read it back.
Number
Arithmetic and comparison. Scores, lives, counters, totals. The only type a Progress bar can be bound to.
Text
Set or append. Names, chosen options, result labels.
Boolean
Set or toggle. Flags such as seen-the-tutorial or bought-the-upgrade.
The manager refuses a name that collides with another variable, or with a name an Interactive Module in the project already publishes ({result}, {finish}, {price}), so two things can never claim the same token.
Writing to a variable
Add a Set Variable action to any trigger, on any object: a tap, a hold, an animation finishing, a game milestone, a break being answered. The operations offered depend on the variable's type.
- Number: Set, Add, Subtract, Multiply, Divide, or Random (between two bounds)
- Text: Set, or Append to what is already there
- Boolean: Set true/false, or Toggle
Any action (not only Set Variable) can carry a condition: “only run this if score ≥ 10”. That is what lets one tap do different things depending on what happened earlier.
Reading a variable
In any text
Type {name} into any Text, Button or CTA content field (or use the { } Insert Variable button next to it) and the live value is substituted, including on the End Card.
Show If Variable
Gate any object's visibility on a comparison. The object appears and disappears live, mid-play, as the value changes.
Progress bar
Bind a Progress object's Source to a Number variable and it maps the value from Min to Max, tweening smoothly to each new number. See Section 10.
Every read is live: a change is reflected in the same scene, mid-play, not only on the next scene entry. This holds in the editor preview and in the shipped ad alike.
What else lands in the same store
Declared variables are not the only things you can read with {name}. The Insert Variable picker lists everything available anywhere in the project:
- Events counters: any name used by an Increment Counter action
- Interactive Module results: a quiz's
{result}, a configurator's or 3D Product's{finish}and{price}, and any numbered option-group tokens
These share one store with declared variables, which is why a quiz outcome and a hand-authored counter can be compared, printed and used to gate visibility in exactly the same ways.
When values reset
Every value lives for one play-through. Starting values are restored when the ad starts, and in the editor whenever you toggle Play, so each run begins from the authored state and a choice made in one run never leaks into the next. Nothing is stored on the device and nothing is sent anywhere; the store exists only in memory, inside the ad.
Export Behavior
Variables are built into the exported file with nothing to load at runtime and no network calls of any kind. Declarations, writes, conditions, text substitution and visibility gating all behave identically in the editor preview and the shipped ad, across all 12 ad networks.
20. Calculations
Variables can be set, added to and toggled. Calculations let them be worked out: a monthly repayment, a basket total, a saving over a year, an insurance quote, a delivery estimate. There are two actions and a formatting rule, and all the maths runs inside the ad, with no server involved.
Compute
Add a Compute action to any trigger, pick the variable to write, and type a formula. The panel shows the result against your starting values as you type, and tells you if you have typed a variable that does not exist.
{amount} * {rate} / 12
round({qty} * {price} + {delivery}, 2)
if({insured}, {base} * 1.2, {base})
What you can write
- Maths: + − * / % ^ with brackets and proper order of operations
- Comparisons: < <= > >= == !=. Each gives 1 or 0, so they combine with everything else
- Functions: min max abs round floor ceil sqrt pow clamp if
- Variables: {name}, or just the name
if(test, a, b) gives a when the test is true. Dividing by zero gives 0 rather than breaking the ad, and a variable that does not exist reads as 0, but the panel warns you about that one rather than letting it ship.
Look Up: tiers without a pile of conditions
A Look Up action turns a number into something else using a small table of ranges: spend under £1,000 is “Starter”, £1,000–£4,999 is “Plus”, above that is “Max”. The same thing can be written as a chain of conditional actions, and that is exactly where tier boundaries go wrong: a gap between 999 and 1,000 is invisible in a list of actions and obvious in a table.
Both bounds are inclusive, a blank bound is open-ended, and the first matching row wins, so overlapping ranges resolve top-down rather than erroring.
Writing numbers the way people read them
Any {token} anywhere (a Text object, a Button, a CTA, Scrolling Text, a Progress label) can carry a format after a vertical bar:
- {total|int} → 12,481
- {total|money} → 12,480.50
- {total|2} → 12,480.50 (1 and 3 also work)
- {share|pct} → 64%
- {views|compact} → 12.5k
No currency symbol is added for you. Write it in your own copy, as £{total|money}. That way it is unambiguous, and it translates through Localization like any other character rather than being guessed from a locale.
Putting it together
A chooser recalculates on the tap that changed it. Choice Chips and a Repeater's cards both write their choice to a variable, and anything reading that variable (a {token} in a text, a Show If gate, a Look Up and Compute chained after the tap in the prebuilt templates) runs against the value it just wrote. One tap, one price. The shipped telecom-plan-v2 template is a worked example: three plans, three data tiers and two contract lengths, which is eighteen possible prices, from a single text object.
Export Behavior
The calculator is built into the exported file and runs entirely offline. It makes no server call and uses none of the dynamic code evaluation some ad networks block, so it works inside every network's security sandbox. Money is rounded the way a spreadsheet rounds it rather than the way raw floating-point arithmetic does, so a price never lands a penny under the one you signed off.
21. Break System (Video Playable Maker)
Breaks pause the video at a specific time and show an overlay. The user must complete an interaction to resume. Each break has its own content layer (background, text, images, buttons, audio).
Break Types
Break
Video pauses; overlay shown. User resumes by one of: click/tap, hold, or double-tap. Break content: background (color/image/none), text, images, buttons, audio.
Break Hold Path
Video pauses; user must trace a path with their finger. Animated hand sprite follows the path. Configurable completion threshold (70–100%) and path tolerance (20–100px).
Resume Interactions (Break)
- Click / Tap: Single tap anywhere on overlay resumes video
- Hold: User holds finger down for configurable duration (400–3000ms). Animated SVG ring fills over the hold time.
- Double Tap: Two taps within 500ms window resume video. “Double tap to continue” hint shown.
- Path: Break Hold Path type, where the user traces the path to the configured completion %
Break Hold Path Settings
- Shapes: Ellipse, Rectangle, Infinity (lemniscate), or Custom (add/move/delete points)
- Per-orientation: pathPortrait and pathLandscape are independent
- Preview sprite: Hand or custom image that follows the path
- Duration: Time for the hand to traverse the full path (ms)
- Easing: linear, ease-in, ease-out, ease-in-out, bounce, elastic.out
- Completion threshold: 70–100% of path user must trace (default 85%)
- Path tolerance: 20–100px (how close the finger must stay to the path)
- Show path in export: Toggle guide path visibility in exported playable
- Path visualization: Ghost dashed line + green progress trail + pulsing start marker in export
Break Hold Path: Video Sync to Path
An optional feature that scrubs the background video in sync with the user's finger as they trace the path, so dragging appears to control the video. Disabled by default; enable it with the Video sync to path toggle inside the Break Hold Path settings.
- Point 0 (fixed): Always the break's pause time (not editable, shown as read-only)
- Points 1 and beyond: Each gets an editable time field (seconds). As the finger moves through that segment, the video scrubs from the previous point's time to this point's time
- Min / max clamping: Each point's time is clamped between the break pause time (lower bound) and the video duration (upper bound)
- Partial configuration: You don't need to set every point. Any gap between two defined checkpoints is filled automatically with linear interpolation. For example, if point 0 = 5s and point 4 = 9s with points 1–3 unset, they resolve to 6s / 7s / 8s. Points after the last defined checkpoint hold the video at that last time
- Threshold-aware: The video reaches the last defined time exactly when the user hits the completion threshold (e.g. at 85% path traced with an 85% threshold), so playback resumes with no sudden jump
Works in both editor preview and exported playable. Smoothness depends on the video's keyframe interval: shorter keyframe intervals (lower GOP size when encoding) produce more responsive scrubbing.
Break Content
- Background: Color, image (portrait + landscape), or none
- Objects: Text, Image, Button (same property set as the main scene)
- Button actions: Resume (unpause video), Jump to time (seek to seconds), Link (open URL)
- Audio: Optional per-break audio clip
Break Hold Path breaks do not support button objects, since path completion is the only resume mechanism.
Other Overlay Types
- End Screen: Triggered at video end (a few ms before); acts as final CTA overlay; same content system as Break
- Permanent Overlay: Visible during a configurable time range while video plays; buttons can jump to time or resume
Object Events (Image & Button)
Main-scene image and button objects (not break content) get their own Events tab (⚡) in the Properties panel, same trigger UX as the Image editor but scoped to video-specific actions.
Triggers (3)
- Tap: Single tap/click on the object
- Double Tap: Two taps within the window
- Hold: Press and hold for a configurable duration
Actions (3)
- Continue Video: Resume playback; dismisses an active break overlay if one is showing
- Jump to Time: Seek to a time in seconds, clamped to
0–video duration - Open End Card: Switch straight to the End Screen overlay
Works live while scrubbing or playing the editor preview, and identically in the exported HTML.
Timely Appearance (Any Object)
Every object type except Background and Audio has an Appearance setting in its Properties panel (General tab): Full video (the default, always visible) or Time frame (only visible between a Start and End time, in milliseconds, clamped to the video's duration). The time window is combined with the object's own show/hide toggle. Hiding it manually always wins. Visibility updates live as you scrub or play, in both the editor and the exported HTML.
22. Account & Cloud Projects
Exporting requires an account and an active plan. An export records what was exported, when, and for which networks. It does not store the project or a preview. To reopen a project later, on this device or another, save it to the cloud.
Signing In
- Passwordless: Enter your email and receive a 6-digit code, with no password to create or remember
- Codes expire after a short window; resend is rate-limited per email and per IP
- You're prompted to log in the first time you click Export if you aren't already signed in. Your export settings are kept and the export continues automatically right after you sign in
- Signed-in state is shared across the homepage, editors, and the account page
Account Page
Visit My account from the navbar menu to see:
- Saved projects: the projects you saved to the cloud, each with a Load button and, if you created one, its share link
- Recent builds: a history of your exports with editor type, networks, file count, size, build time, status, and date. Builds store no files, so there is nothing to reopen from here
- Stats: total builds, success rate, total bytes exported, and average export duration
- Breakdowns: exports by editor type (Video / Image / End Card), by ad network, and by object types used
Saving and Reopening a Project
- Save a project with Save to Cloud in the editor, or tick Save project to cloud & create a share link in the export window. Either way it counts toward your plan's cloud-project limit
- Reopen it from Account → Saved projects with Load. It opens in the correct editor, as it was when you last saved it
- Loading replaces the project open in that editor. Continue editing and exporting from there
- A share link belongs to a saved project, not to an export. Deleting the project deletes its link
- Only you, and workspace members you share the project with, can load it. Every load is checked against the signed-in account
Notifications
When you are signed in, a bell in the site navigation and in the editor header collects product news and anything you missed by email: an email you have not opened appears there a day after it was sent, with the same button. Opening an item marks it read, and you can dismiss any you do not need; when there is nothing new it says You are all caught up.
22.1 Your Projects on This Device
Without signing in or saving anything, the browser keeps up to 5 projects on this device, counted across the three editors. Each is saved as you work, and starting something new never overwrites the project you had open: it takes a slot of its own.
- Continue a project: every visit to an editor opens the start window with that editor's saved projects listed first, newest marked Last edited. Open one, or Delete it to free its slot
- Mid-session: open Your projects from the Save & draft options menu in the editor header
- Save this project on this device in the start window is on while a slot is free. Turn it off for a quick experiment you do not want to keep
- When every slot is used, a new project still opens but is not kept on the device; delete one in Your projects, or save the project to the cloud
- The start window and the menu both show how many device slots and cloud projects you have used
Device projects live in this browser only. Clearing site data removes them, and they do not follow you to another computer. For anything you want to keep or share, use Save to Cloud (above).
23. Exporting Playable Ads
Export Process: Step by Step
- Click Export in the top header
- Enter iOS App Store URL and Android Google Play URL (at least one required)
- Pre-export validation runs automatically. Errors block export; warnings advise action
- Select target ad networks (build time scales with count)
- Check estimated size: green <3.5 MB; orange 3.5–5 MB; red blocks at ≥5 MB
- Click Compress assets to reduce images/video/audio before exporting
- Enable Web Preview to test in browser (optional)
- Click Start build. A progress bar shows the steps, and you can cancel at any time
- Download: one .html or .zip per network, or a master .zip if multiple networks selected
Export Formats
- Single HTML file: Unity, Moloco, AppLovin, Chartboost, InMobi
- HTML5 ZIP (index.html + main.js): Google Ads, Mintegral, Meta (Facebook), TikTok, Liftoff, Pangle. TikTok and Pangle also include config.json
- Vungle: a ZIP holding a single ad.html
- Every asset travels inside the file, with no external files or CDN links
- Inline styling and scripting; device detection for iOS/Android URL routing
Compress Assets (Pre-Export)
- Images: WebP quality 60; dimensions preserved; major size reduction
- Video: MP4 H.264 + AAC; CRF 36; ~400k video / 64k audio bitrate
- Audio: OGG/Opus; mono; 22 050 Hz; 32 kbps VBR
Auto compression during export: image quality is lowered step by step (90% → lower as needed), and resolution is reduced if that is not enough. Export blocked if final size exceeds 5 MB.
Pay per export: Export Pass
- No subscription: 1 export for $10, 3 for $27 or 5 for $42
- 1 pass = 1 export to 1 ad network. A second network is a second pass; every re-export or variation uses a pass
- use within 30 days of purchase; the passes that expire soonest are used first
- Covers any project except from-scratch game templates (those are Agency)
- Bought from the export window when the free trial or a plan's monthly exports run out. A plan's own exports are always used first; web previews never use a pass
- 10 exports: $80 in passes or Solo $29.99/month
Button Click Behavior
- iOS devices: iOS App Store URL
- Android devices: Android Google Play URL
- Other / desktop: iOS URL as fallback
- Device detection is automatic, so no per-button URL is needed
- URLs configured in the export modal, applied to all buttons
23.1 Will This Pass? The Build Check
You do not have to open the Export window to find out whether an ad will ship. The check button just left of Export in the editor header opens Will this pass?, a verdict on the project as it stands, against every ad network at once, while there is still time to fix things. A dot on the button counts what needs fixing. It is the same check the Export window runs, so the two always agree.
Fix these before exporting
Anything that would stop the export or break the ad, each in words.
File size
The ad's size now, after any compression you have applied, and which networks it is too big for and by how much. Open the compressor straight from here.
Your click-through links
Which networks pass your link and its parameters through, and which choose the destination themselves (see Section 24).
Worth a look
Warnings that do not block the export, such as a character your font cannot draw.
It also says whether you need to log in to export this project. When everything is fine it reads Everything checks out — ready to export. Viewers and editors on a shared project see it too, so they can tell the owner what would stop an export.
24. Deep Link (Dynamic CTA Destinations)
Most playables end the same way: the player customises a car, picks a plan, builds a team, then taps Install and lands on a generic store page or homepage that knows nothing about any of it. Deep Link carries those choices into the click-through URL, so the destination opens on the exact thing they chose. Available on every plan.
How it works
Two steps, in two places:
- Record the choice. On any object's Events tab, add a Set Link Parameter action and type
name = value(for examplecolor = midnight-blue). Three modes: Set replaces (one colour), Add builds a list (a basket of products), Toggle selects and deselects. - Map it to the URL. Open Export → Deep Link. Everything the project records is listed there; press map (or Map all) to attach each one to a URL parameter. A live example click shows the exact URL the CTA will open.
Recording a value on its own sends nothing. The mapping is what makes it travel. Anything unmapped is called out in the export panel.
Website destinations
Switch the destination toggle to Website and the mapped choices are appended as ordinary query parameters:
https://yourbrand.com/configurator?color=midnight-blue&trim=m-sportValues are sanitised (spaces become dashes, punctuation is dropped) so they always survive the URL. You can also place a value inside the path rather than the query using a {{name}} placeholder: https://shop.com/p/{{sku}} becomes https://shop.com/p/12345, and a value used that way is not repeated in the query string.
Two destinations: pick one
Export → Destination offers App store and Web. The split is not “app vs website”. It is who owns the click, which is what decides whether anything can travel on it.
| Destination | You enter | Carries parameters? | You get |
|---|---|---|---|
| App store | iOS and / or Google Play URLs | No | A build per ad network you tick |
| Web | One URL: your website or your MMP tracking link | Yes | One single-file ad and a share link |
They are mutually exclusive, and switching clears the other side, so the export always has exactly one destination and never has to guess.
App store: why nothing can travel
An App Store or Google Play URL cannot carry a parameter. iOS has no install referrer at all (attribution runs through SKAdNetwork), and Google Play records the referrer from whichever click URL actually reached the store, which in a network campaign is the ad network's tracking URL rather than yours. Dressing up a store link looks like it works and delivers nothing, so the export does not offer it.
The choices are still recorded, and still handed to whatever tracking the host SDK exposes. If you need the destination itself to open on the choice, use the Web destination.
Web: one URL, one ad
The Web destination takes a single URL and it is entirely up to you what that is. If it is a product page or a landing page, parameters are appended straight to it. Or your MMP tracking link, which is the click: it redirects to the right store per platform, and the MMP hands your value to the app on first open. That is the one mechanism that opens an app on the player's choice.
You do not have to say which kind it is. The provider is detected from the URL (onelink.me, app.adjust.com, app.link, sng.link, smart.link) and shown back to you as a picker you can correct, which is what a custom tracking domain needs.
This destination exports one single-file ad, not per-network builds, and the ad-network list disappears while it is selected. There is no network SDK in the loop, so there is nothing to build for one. A file per network would only imply integrations that are not happening. It is for placements where the creative owns the click: your own site, a direct or IO placement where you supply the tag, a DSP where you own the click URL, and the share link. On an ad-network install campaign the click URL is set at campaign level, so yours would be replaced or left competing with it for last-click attribution. Use App store there.
Value shapes, when the URL is a tracking link:
| Provider | Parameter | Value shape |
|---|---|---|
| AppsFlyer OneLink | deep_link_value + deep_link_sub1–10 | Bare token: 3series |
| Adjust | deep_link | Full URI: myapp://product/3series |
| Branch | $deeplink_path | Path: product/3series |
| Singular | _dl | Full URI |
| Kochava SmartLink | deeplink | Full URI |
The export writes the right parameter in the right shape for the detected provider. Where a URI or path is expected you supply the pattern once (myapp://product/{{product}}) and the live choice is filled into it. A store URL pasted in as a tracking link is detected and called out, because that is the one mistake that silently drops every parameter.
There are no separate iOS or Google Play fields here, and none are needed. A tracking link handles store routing itself: the correct store per platform when the app is not installed, plus the desktop and web fallbacks configured in your MMP dashboard.
More than one choice
Map as many as you like. One is nominated as the value the app opens on (App opens on, defaulting to the first); on AppsFlyer the rest are carried in deep_link_sub1–10, which is what a newly installed app actually receives. Arbitrary custom parameters come back empty on a deferred install. They are also sent under their own names for players who already have the app and for web fallbacks. The export panel prints the exact slot mapping to hand your app developer.
One thing to agree with your developer first. A value like blue only means something if the app has been built to route on it. The MMP delivers the value; what it opens is your app's code. Settle the vocabulary before the campaign goes live.
Which ad networks carry the parameters
This applies to the App store destination, where you pick networks. (The Web destination has no networks to pick. It is one file for a placement you own.) Whether anything can travel comes down to one thing: does the network's exit call take a URL? Four do, and eight decide the destination themselves. On those, no URL is passed at all, so a custom button link or a mapped parameter cannot travel. That is their published contract, not a limitation of the export.
Every network in the export list is badged with which it is: URL for the ones that open the link the creative supplies, SDK for the ones that decide themselves. Hover either badge for the exact exit call.
| Network | Exit call | Parameters arrive? |
|---|---|---|
| Unity, AppLovin, Chartboost, InMobi | mraid.open(url) | Yes |
| Web preview & share link | window.open(url) | Yes |
| Google Ads | ExitApi.exit() | No (takes no URL) |
| Meta, Moloco | FbPlayableAd.onCTAClick() | No (takes no URL) |
| Mintegral | window.install() | No (takes no URL) |
| TikTok, Pangle | window.openAppStore() | No (takes no URL) |
| Vungle | parent.postMessage("download") | No (the host owns the exit) |
| Liftoff | Liftoff.open() / mraid.open() with no URL | No (Liftoff supplies the destination) |
The Deep Link panel lists this live for the networks you have actually ticked, so you can see before exporting which of your selections will carry the values and which will not. Unity and AppLovin additionally expect the CTA to reach an app store; a website destination works there technically but can fail their creative review, and the export says so.
25. Localization (Multi-Language Ads)
Localization lets you ship a single playable ad that adapts its text to the viewer's device language at runtime, with no duplicate projects and no separate exports per market. Add a language, fill in translations, and export once. All three editors support localization on Text, Button and CTA Button objects, on a Dialogue's name, line and choices, and on a game's story intro.
How It Works
- Translations are saved with each object, so they travel with it when you copy, move or duplicate it (no separate file)
- On export, all translation data is embedded inside the single HTML file alongside the scene data
- When the ad plays, it shows the translation that matches the language of the viewer's phone (a phone set to French Canadian gets your French text)
- Falls back to the default English text when no translation is found for the detected locale
- You can also force a specific language by appending
?lang=frto any preview or review URL, which is useful for QA without changing your device language
Opening the Locale Manager
Click the globe icon (🌐) in the top-right header bar, to the left of the gear button. A blue dot on the icon indicates languages have already been added to this project.
- You can also open it by clicking the "0/N translated" pill that appears next to the Text Content or Button Text label in the Properties panel whenever languages are configured
Adding Languages
- Open the Locale Manager via the globe icon in the header
- Click + Add language in the languages row. A dropdown of 17 common languages appears (French, German, Spanish, Italian, Portuguese, Japanese, Korean, Chinese, Arabic, Russian, Dutch, Turkish, Polish, Swedish, Indonesian, Thai, Vietnamese)
- English (EN) is always the default and cannot be removed
- To remove a language, click the × next to its pill. This also removes all saved translations for that language from every object
Entering Translations
Translation Table
Each row shows one translatable object: the scene it belongs to, the default English text, and an editable input per language. Rows cover Text objects, Button objects (text variant), CTA Button objects, Dialogue names, lines and choices, and story intro lines, across all scenes and the end card.
- Leave a cell blank to fall back to the default English text
- The table scrolls horizontally when many languages are added
- A sticky header row keeps the column labels visible while scrolling
Properties Panel Pill
When languages are configured, a small pill appears in the Properties panel next to the Text Content or Button Text label showing how many languages are filled in for that specific object (e.g. "2/3 translated").
- Clicking the pill opens the Locale Manager directly
- Gives a quick visual signal of translation coverage without opening the table
Translate with AI
The language manager has a Translate with AI button in every editor. It fills in only the lines still missing a language, uses AI credits from a paid plan, and costs nothing for lines our templates already ship translated or that you translated before. Check the result in the table, and translate last, once the copy is final. See 30.6.
CSV Import / Export
Send translations to a localization team and import them back, with no access to the editor required.
Export CSV
- Appears when at least one language and one text object exist
- Generates
projectname_translations.csvwith columns: Scene, Object ID, Default (EN), then one column per language code - Share it with a translator. They fill in the language columns and leave the Scene / Object ID / Default columns unchanged
Import CSV
- Click Import CSV and select the filled-in file
- Matches rows by Object ID, and any object not in the CSV is left unchanged
- Language codes from the CSV are added automatically if not already in the project
- Blank cells in the CSV clear the translation for that language on that object
Exporting with Localization
When languages are configured and Web Preview is enabled, a Localization section appears in the Export modal with two modes:
Single file (default)
Exports one HTML file with all translations embedded. The ad shows the text in the language of the viewer's phone automatically, with no extra setup on the ad network side.
- File size is slightly larger (all translations are embedded)
- Recommended for most campaigns (nothing extra to configure)
- Works for all 12 ad networks
Per-language files
Exports one HTML file per language with text baked in (e.g. Project_EN.html, Project_FR.html, Project_DE.html). Smaller individual files; each contains only one language's text (other translation data stripped).
- Useful when the ad platform requires separate creatives per locale
- Files are bundled together in the downloaded ZIP
- EN file uses the default text; each locale file uses that language's translations
Ad network exports (non-Web-Preview): always use single-file mode. Every translation is inside the one file, and the ad picks the viewer's language the same way inside every ad network.
Testing a Specific Language
- In the Review / Preview URL, append
?lang=fr(or any two-letter ISO code) to force that language - Example:
https://yourdomain.com/preview/abc123?lang=de→ German - The
?lang=parameter takes priority over the phone's language - Removing the parameter (or using an unrecognised code) falls back to the phone's language, then to the default English text
Export Behavior
Translations are embedded inside the exported HTML. No extra network request is made at ad runtime. Everything is self-contained in the single file, which keeps it compatible with all 12 ad networks and their strict no-external-URL policies.
26. Portrait / Landscape & Asset Picker
Two-Orientation Support (Video Playable Maker)
The Video editor produces one playable that looks right in both portrait and landscape, without a duplicate project. Every object stores independent layout data for each orientation, and the exported HTML detects the device orientation at runtime to render the right layout automatically.
How to edit both orientations
- Use the Portrait / Landscape toggle in the top bar to switch between the two layouts
- Position, resize, or style objects for the current orientation. The other orientation is unaffected
- Press Play in either orientation to preview the video and all animations in that layout
- Export once. The HTML file handles both orientations from a single file
What is stored per orientation
Position & Size
- X, Y: xPortrait / yPortrait / xLandscape / yLandscape
- Width, Height: widthPortrait / heightPortrait / widthLandscape / heightLandscape (text & images)
- Rotation, Scale X/Y (per orientation)
Visual Properties
- Blend mode: blendModePortrait / blendModeLandscape
- Image tint color: tintPortrait / tintLandscape
- Background blur & darken (per orientation)
- Opacity: opacityPortrait / opacityLandscape
Background Assets
- Background image: backgroundImagePortrait / backgroundImageLandscape
- Background video: backgroundVideoPortrait / backgroundVideoLandscape
- Each orientation loads the matching asset automatically at runtime
Break Hold Path
- Path shape & points: pathPortrait / pathLandscape stored independently
- Regenerate Path in one orientation without affecting the other
- Landscape canvas (667×375) generates a correctly proportioned horizontal layout; portrait canvas (375×667) generates a taller vertical layout
End Screen in Both Orientations
When you add an End Screen from a prebuilt template, the template includes a portrait layout and a matching landscape layout, so there is nothing to reposition. Objects in the template have xLandscape / yLandscape coordinates pre-set to a horizontal composition.
- Start with a template: Select a built-in design, and portrait and landscape layouts are included automatically
- Start blank: Objects default to portrait coordinates; switch to Landscape and reposition for a clean horizontal layout
- Remove and re-add: Use the trash icon on the End Screen row in the scene list to remove it; the Add End Screen button reappears to choose a new design
- Both layouts export in the same HTML file, and the ad network's player picks the right one at runtime
Viewport dimensions in landscape mode
The project's viewport size is always stored as a portrait value (e.g. 375×667). In landscape mode the editor swaps width and height automatically, so the canvas becomes 667×375 for layout purposes. This means video files must match the intended aspect ratio: upload a 16:9 landscape video for the landscape slot and a 9:16 portrait video for the portrait slot.
Asset Picker
Opens when you add or change an image, sprite sheet, animated sprite frame, audio, or video. Organized by category with filter pills.
- Horizontal browsing: Image results scroll left/right in a snap-aligned strip (like a wallpaper picker) instead of a vertical grid. Drag it, use the arrow buttons on hover, or press the keyboard arrow keys
- Default images: Built-in library organized by category (Logos, Backgrounds, Buttons, Hands, Sprites). Click Select to use one
- Default sounds: Built-in audio clips with inline playback. Click Use
- Upload image: JPG, PNG, WebP. Resized to fit the viewport on add (max 50% of canvas)
- Upload video: MP4 recommended; max 3.5 MB per file (Video editor only)
- Upload audio: OGG, MP3 (add as many audio objects as a scene needs - a music bed plus sounds your Events play)
- Every uploaded asset travels inside the exported file, with no external URLs or CDN
27. Ad Network Requirements
File Size Thresholds
Recommended: 1.5–2 MB
Loads quickly on every network and still leaves room for sharp images.
Warning: 3.5 MB+
Performance warning shown. Compress assets before exporting.
Blocked: 5 MB+
Export blocked. Must reduce size before proceeding.
Supported Networks (12)
Playables from the Video Playable Maker and the Playable Ads Maker export to all of these. The End Cards Maker exports to the 7 that take an interactive end card: Unity, Vungle, Liftoff, Moloco, InMobi, Chartboost, Mintegral.
| Network | Format | Recommended | Maximum |
|---|---|---|---|
| Google Ads | HTML5 ZIP | 1.5–2 MB | 5 MB |
| Meta (Facebook) | HTML5 ZIP | 1.5–2 MB | 2 MB HTML (5 MB ZIP) |
| TikTok | HTML5 ZIP + config.json | 1.5–2 MB | 5 MB |
| Mintegral | HTML5 ZIP | 1.5–2 MB | 5 MB |
| Liftoff | HTML5 ZIP | 1.5–2 MB | 5 MB |
| Moloco | Single HTML | 1.5–2 MB | 5 MB |
| AppLovin | Single HTML | 1.5–2 MB | 5 MB |
| Unity Ads | Single HTML | 1.5–2 MB | 5 MB |
| Pangle | HTML5 ZIP + config.json | 1.5–2 MB | 5 MB |
| Vungle | ZIP (ad.html) | 1.5–2 MB | 5 MB |
| Chartboost | Single HTML | 1.5–2 MB | No published cap (we build to 3 MB) |
| InMobi | Single HTML | 1.5–2 MB | 5 MB |
Standards & Moderation Compliance
Every export is built to pass network moderation without manual changes. These behaviours are always on. There is nothing to enable and no setting to get wrong.
MRAID 3.0, with 2.0 fallback
Exports use the full MRAID 3.0 feature set on networks that support it, and fall back to MRAID 2.0 automatically on networks that don't. This is decided live inside the ad, per impression, with no separate build to choose or maintain.
Sound respects the device
Audio stops when the screen is locked or the ad is scrolled out of view, and resumes where it left off. On iPhone, the physical mute switch turns the ad's sound on and off in both directions.
Silent until first tap
No sound plays before the user interacts with the ad. This is required by Google Ads and AppLovin, and safe on every other network. Sound then starts from the beginning, not mid-track.
Correct click-through per network
Each network's own required redirect and lifecycle calls are applied automatically for the network you select in the export modal.
28. Troubleshooting
Export file is too large
- 3.5 MB+: Orange warning. Compress assets
- 5 MB+: Export blocked. You must reduce the size first
Solutions:
- Use Compress assets in the export modal before exporting
- Replace high-res background images with lower resolution versions
- Remove unused objects or audio
- Reduce video bitrate in compress modal
Export button asks me to log in
- Exporting requires a signed-in account. Enter your email, then the 6-digit code sent to it
- No password is needed and none is created. Codes are single-use and expire quickly
- Your export settings are preserved and the export continues automatically after you sign in
Images not loading in exported file
- Images travel inside the exported file, so check that the upload completed
- Supported formats: JPG, PNG, WebP
- A fallback image displays if the main image is missing
Animations not working in export
- Animations use lightweight animation keyframes. Verify that the Animation tab is enabled
- Preview with the Play button before exporting
- Some networks sandbox JavaScript, so test in the network's own preview tool
- Re-check the object's settings, and try the exported file in another browser
Creative rejected for sound behaviour
Some networks reject creatives that keep playing sound after the screen is locked, or that ignore the iPhone mute switch. Exports handle both automatically, so if you see this:
- Re-export and resubmit, because creatives built before this was added keep their old behaviour
- Test sound on a real phone, not a desktop browser or simulator (neither has a mute switch)
- Remember sound starts on the first tap by design, so a silent first second is expected
Clicks / ClickTag not working
- Ensure at least one valid iOS or Android URL is entered in the export modal
- ClickTag is automatically configured per network's spec
- Test in the ad network's preview/validator tool, not just a browser
Particle FX or Animated Sprite not visible in export
- Both require a modern mobile browser, which every ad network environment provides
- Check the object is not hidden (eye icon in scene panel)
- For Animated Sprite: verify Auto Play is enabled and Start Delay is not too long
- For Particle FX: verify Emission Rate is greater than 0
Best Practices
- Target 1.5–2 MB total export size for best load performance
- Use WebP images, which are significantly smaller than PNG at similar quality
- Compress video and audio before uploading large files
- Test both portrait and landscape orientations before exporting
- Preview animations with Play button before exporting
- Use the network's own preview/validator tool to confirm acceptance before submitting
- Save your project to the cloud before exporting if you want to reopen it on another device (every editor already autosaves to this device)
29. Team Collaboration
All paid plans (Solo, Studio, Agency) include team collaboration: invite colleagues, share specific projects with them, set who can do what on each project, track versions, and see who is working where through live presence and email notifications.
Your Workspace
Every paid account gets exactly one workspace, automatically named “[Your name]’s Workspace”. You can rename it at any time from the workspace settings panel on your Account page. Your workspace is the container for all your team members. People you invite here can then be given access to individual projects through the Share flow.
Members and projects are separate concepts: adding someone to your workspace does not automatically give them access to any project. You share each project explicitly (see Sharing Projects below). Removing someone from a project does not remove them from the workspace, and vice versa.
Seats & Pricing
Seats are an add-on at $9.99 / seat / month, billed with your plan: charged for the days left in its current period, then renewed on the same date. The Admin’s own slot is free. Seats are only needed for each additional person you invite. The number of purchasable seats is capped per plan:
| Plan | Extra seats available | Total team size |
|---|---|---|
| Solo | Up to 1 | 2 (Admin + 1) |
| Studio | Up to 5 | 6 (Admin + 5) |
| Agency | Up to 10 | 11 (Admin + 10) |
Purchase seats from the Members panel inside your workspace (Account page → workspace section). You can add or remove seats at any time; billing is prorated automatically. Seats must be purchased before you can send an invitation.
Roles
Each workspace member has an account-level role (set when you invite them). You can also override the role for a specific project when sharing it, for example to give a contractor Editor access to one project while keeping them as Viewer everywhere else.
| Capability | Admin | Editor | Viewer |
|---|---|---|---|
| Load & edit shared projects | Yes | Yes | No |
| Send project for review | Yes | Yes | No |
| View shared projects & builds | Yes | Yes | Yes |
| Leave comments on review | Yes | Yes | Yes |
| Invite members & manage seats | Yes | No | No |
| Change member roles | Yes | No | No |
| Remove members | Yes | No | No |
| Delete workspace | Yes | No | No |
Inviting Members
From your workspace settings panel (Account page), enter the person’s email address and choose their role (Editor or Viewer), then click Invite. They receive an email with a secure accept link valid for 7 days.
The Invitations section of the Members panel shows every invitation you’ve sent with a live status badge:
- Pending: invite sent, link not yet clicked. Shows how many days remain before it expires.
- Expired: the 7-day window passed without the link being clicked. Click Resend to issue a fresh link.
- Accepted: the person clicked the link and joined. They now appear in the active members list above.
Admins can resend any pending or expired invitation directly from the Members panel. There is no need to delete and re-create it. The old link is invalidated and a new 7-day link is emailed immediately.
Sharing Projects with Your Team
Workspace membership alone does not expose any projects to your team. You share each saved project explicitly:
- Go to your Account page → Saved projects.
- Click the Share with workspace icon (people symbol) on the row you want to share.
- A Share project panel opens, listing all current workspace members.
- Optionally override each member’s role for this specific project using the dropdown next to their name.
- Click Share project. All members receive an email notification and the project immediately appears in their profile under Workspaces I’ve Joined.
If your workspace has no members yet, the Share panel shows an inline invite form so you can add someone without leaving the flow.
To unshare a project (revoke workspace access to it), open the project’s Manage Project Access panel and click Unshare project. This removes the workspace link from that project only. Members remain in your workspace and still have access to any other projects you have shared with them.
What Members See
After accepting an invitation, a member’s Account page shows a Workspaces I’ve Joined section. Each workspace card expands inline to list every project that has been shared with them, with no extra clicks needed. Each project row shows the editor type, last-updated date, and a Load button. Clicking Load opens the project directly in the correct editor (Video, Image, or End Card), exactly as if the member owned the project themselves.
Members with a Viewer role see the project list but do not get a Load button. They can see the shared projects and open review links, but cannot open the editor.
A small people icon in the workspace card header opens the workspace settings modal, where members can see who else is in the workspace and (if they are an Admin) manage roles and invitations.
Per-Project Role Overrides
When sharing a project you can set a role for each member that overrides their workspace-level default for that project only. For example: a member who is a Viewer in the workspace can be given Editor access to a single campaign draft. The override only applies to that one project. Their workspace role is unchanged. Overrides are visible in the Share panel and in the Manage Project Access panel, marked with an Overrides account role label.
Managing Your Workspace
Use the workspace section on your Account page to open the workspace settings panel. From here, as Admin you can:
- Change a member’s role: promote or demote between Editor and Viewer. The change takes effect immediately.
- Remove a member: they are emailed immediately listing the projects they are losing access to, and all shared projects become inaccessible to them at once.
- Resend invitations: refresh a pending or expired invite link from the Invitations section.
- Buy or remove seats: adjust your seat count directly from the Members tab.
- Delete the workspace permanently: all members are emailed a notification listing the affected projects. This action cannot be undone.
Email Notifications
These emails are sent automatically, with nothing to set up:
| Event | Who receives it |
|---|---|
| Workspace invitation sent / resent | Invited person |
| Project shared with workspace | All workspace members |
| Project unshared from workspace | All workspace members |
| Member’s role changed on a project | Affected member |
| Member removed from workspace | Removed member (lists affected projects) |
| Workspace deleted | All members (lists affected projects) |
| Review link sent | Reviewer (external) |
Send for Review
Share any saved project with a client or stakeholder for feedback. No account is required on their end. On the Account page, click Send for Review on any draft row and enter the reviewer’s email. They receive a private link to a playable preview of the ad where they can play it, drop timestamped comments on specific elements, and mark comments resolved as feedback is addressed. You see all feedback in the same panel without chasing replies over email.
Version History
Create named snapshots of any cloud-saved project from the Account page. Each version stores the complete project state. Browse past versions and restore any snapshot, and the project reverts to that exact state, ready to continue editing or re-export. Every paid plan keeps a rolling set of versions per project, sized by the plan (see Pricing); when the set is full, saving a new version replaces the oldest, and the history panel tells you which one before you save. A workspace project uses the owner’s plan for every member. The free plan has no version history.
Public Share Links (Web Preview)
With Web Preview on, tick Save project to cloud & create a share link in the Export modal and you get a public link at /preview/[token]. Anyone with the link can play the ad in their browser, with no login and no app needed. The link belongs to the saved project, not to one export: it stays the same and always shows your latest export. It is a preview, so its click-through is disabled. Copy it any time from Saved projects on your Account page; deleting the project deletes the link. Builds are a history of what you exported and store no files.
Real-Time Presence
Whenever more than one team member has the same project open in the editor, their avatar initials appear in the editor header in real time. You can see at a glance who else has the file open. If a co-editor has made cloud saves since you last loaded the project, a conflict prompt appears when you try to save, giving you the choice to overwrite their version or reload the latest one. A snapshot of your local version is saved automatically before any overwrite.
30. AI Lab: Make Playables and End Cards with AI
AI Lab turns an idea, a store link or a screenshot into a finished playable or end card that opens in the full editor, where you can change every word, colour and picture. It lives in two editors of its own, each with AI Lab docked on the left:
AI Playable Maker
/editor/ai-playable-maker: a whole playable ad from a description or a store link, with its game, its End Cards and its sounds.
AI End Card Maker
/editor/ai-end-card-maker: one end card designed for your app, ready to export on its own.
The other editors carry no AI buttons, with one exception: Translate with AI in the language manager (see 30.6). On any template page, Make variations with AI opens that template in the matching AI editor. To see what AI has made before you start, play and remix the examples on the AI page.
30.1 Creating a Playable
- Open the AI Playable Maker and stay on the Create tab of the AI panel.
- Describe your idea: what the player does, how a round is won, and what the ad is for. A store link or a reference screenshot on its own is also a valid brief. If you are not sure yet, Suggest 3 ideas drafts three concepts to pick from, charged like a design draft.
- Make three quick choices instead of writing a perfect prompt:
- Goal: Install, Engagement, Brand awareness, Win back players
- Look: Hyper-casual, Premium, UGC-style, Minimal, Cartoon, Realistic
- Audience (optional): who the ad is for, in a few words
- 2D, 3D, Auto: how the game itself is drawn. Auto lets the design decide from your idea
- Pick the canvas size. Results open in Full HD by default.
- Read the design. AI drafts a design first: the game loop, the hook, the End Cards and the route it will take. The design is charged for what it really uses - a fraction of a build - and so is each redesign: when the gameplay is unclear it asks you questions, and Answer and redesign drafts it again. Fix the idea here, before anything is built.
- Click Build. The button shows the price before anything runs (see 30.8).
- Watch the progress bar: the real step, a percentage and the time left. It never goes backwards, and it stays up until the result is ready to open. You can close the window: the generation keeps going, and My generations picks it up again.
- Click Open in editor.
AI Lab 2.0: a complete, original game
In the AI Playable Maker the AI Lab 2.0 box is ticked by default when you have not picked a template. Its button reads Build the game and shows the price: AI Lab 2.0 builds a complete, original game for your ad, with its own art and end card, checked in portrait and landscape, ready to edit. It usually takes about 30 minutes. You can close the window; the game will be waiting in My generations, and you can watch it take shape while it builds. Untick the box (or pick a template in the setup) for the design-first flow in steps 5 and 6.
Which route the design takes
1. One of our templates
The first choice whenever a finished template already plays the way you asked. AI themes it for you; the layout, the HUD, the difficulty and the result cards stay as the template has them.
2. A custom playable
When no template fits, AI composes the playable from the same objects, motion, events, variables and game types you would use by hand, so every part stays editable.
3. A brand-new game
Only for a mechanic nothing in the editor can express. The new game is built and tested, and any problem found is fixed before it opens.
Every result is checked before you see it: text that does not stand out from what is behind it is recoloured, text that would overflow its box is sized down, and the finished playable is reviewed in both orientations against the standard of our own templates. A brand-new game demonstrates its own move with a guide hand before the first touch.
30.2 From a Store Link
- Open the Store link tab and paste an App Store or Google Play link.
- Choose how faithful the playable should be:
- Like the real game (recommended): uses the listing and screenshots to understand how the game actually plays, and designs its loop. It goes through the same design step as 30.1, questions included.
- Quick re-skin: picks the closest mechanic from our templates and dresses it in your game's look. Cheaper, but it plays like our template rather than like your game.
- Build, then Open in editor.
A playable made from a store link opens with its words, colours, type, pictures, sounds, game settings and layout editable. Its events, animations, object types and structure stay as built, so a change by hand cannot break the game.
30.3 AI End Card Maker
- Open the AI End Card Maker.
- Describe the app or paste its store link, and choose a Goal and a Look as in 30.1.
- Optionally pick one of our end cards as the starting point; otherwise AI designs a card for your app from scratch.
- Build, then Open in editor, and export it like any end card.
The playables AI makes come with End Cards designed alongside the game, in the game's own world and pictures. No card shows a store icon it was not given.
30.4 Changing It: the Chat and Restore Points
An AI project opens on the editor's Edit side. The right column has two panels behind one tab row, AI and Properties; selecting an object switches to Properties, and a change already on its way keeps running underneath.
- Edit by hand first: it is free. Move, resize, retype and recolour anything in the normal editor. Save the chat for what is faster to ask.
- To ask for a change, type it into the chat docked at the bottom of the AI panel, for example “make the headline shorter” or “add a second level”.
- Choose Small or Bigger, or let the wording decide. A small change edits words, colours, pictures and settings; a bigger one adds, removes, rewires or re-times parts of a composed playable. Your own edits are kept: what you changed by hand wins unless the AI changed that same thing.
- Ask for a new picture in the chat too; the replacement is drawn in the style of the art around it.
- Every AI change saves a restore point. Open the chat's summary line to see them, Compare one with the current project, and Restore it. Restoring is free and can be undone. Restoring an earlier result costs nothing; generating it again costs credits.
- A version takes five chats. After that, Save version and continue saves it to the cloud version history (where your plan has one) and starts the next version.
30.5 A/B Variants
A useful A/B test changes one thing, so you know what made the difference. The A/B test tab in the AI panel makes variant B (or B and C) from the project as it is now, and never touches A.
- Pick what to change: hook / headline, call to action, colour theme, difficulty, end card copy, background art, or describe something else. Background art is offered for playables built on one of our templates.
- Pick B or B + C and generate.
- Each variant is saved as its own project on this device, named after A and the change (“Spring Sale - B (CTA)”), so A stays exactly as it was.
- In the Export window, tick also export variant B, C. Every arm, A included, gets a fixed
ab_variant=<letter>click-through parameter, so your network or MMP reports the arms apart. Each arm is a normal export and counts as one.
30.6 Check, Sounds, Settings and Translation
- Check (Playable Score): one score out of 100 from six areas: gameplay, the first seconds, the CTA, design, network compliance and asset weight. It is measured against the ad networks you target, lists each issue in words, and offers one-click fixes for CTA and hook timing, contrast and heavy images. The score uses no credits; click the score badge at the top of the AI panel to open it.
- Sounds: replace the music, an Audio object, a game's sound slots, or any effect a brand-new game plays, with your own file.
- Settings (brand-new AI games): tune difficulty within the ranges the design declared, move the game's HUD and buttons, and swap its pictures.
- Translate with AI lives in the editor's language manager, in every editor. Only lines still missing a language are sent, and lines our templates already ship, or that you translated before, cost nothing. Translate last, once the copy is final.
30.7 My Generations (History)
Open History from the AI panel or the editor header to see every generation you have made in that editor, with what it cost.
- Open puts a finished result straight into the editor (a chooser appears only when one job made several variations).
- Continue picks up a design or a build where you left it, on any computer. A brand-new game gets a quick free check again before it opens.
- Delete removes the generation and its files; the record of what it cost stays in your credits activity.
- The record of each generation is kept for good, but the result itself (project, pictures, sounds, game) is kept for a number of days set by your plan (table in 30.8). To keep one for good, use the cloud button on its row: it opens the result and saves it as an ordinary cloud project, under your plan's cloud project limit.
30.8 AI Credits
Every AI job is paid in credits:
- You see the price first: the button reads like “about 25-40 credits, never more than 45” before anything runs.
- The maximum is held while the job runs, so it can never cost more than it said.
- It is charged what it used, and the rest of the hold comes back at once.
- Failures on our side are free. An outage or a timeout costs nothing, and free steps (restore points, the Playable Score) stay free. If the request itself could not be made to work, you pay only what that attempt really cost us.
Credits come with a plan each billing period. Monthly credits renew with your plan and do not roll over. Top-up credits are used after your monthly credits and expire 12 months after your latest top-up. Exporting a playable or end card made with AI does not use your monthly exports while your plan keeps that AI result. You already paid for the AI work in credits. A top-up adds more: each plan has its own. The ✦ chip at the top of the page shows your balance; click it to see every job with what it held, charged and returned. On a shared workspace project, AI uses the project owner's credits.
| Plan | AI credits each month | Top-up | Results kept in History |
|---|---|---|---|
| Free | Not included | - | 7 days |
| Solo | 200 | 50 credits for $9.00, up to 2 a month | 30 days |
| Studio | 600 | 100 credits for $14.00, up to 3 a month | 90 days |
| Agency | 2,400 | 250 credits for $25.00, as often as you need | 180 days |
There is no free AI trial: AI comes with every paid plan. Without one you can still play and remix what we made with AI on the AI page.
What each task costs, what a plan's credits make, and how to make them go furthest: How AI credits work. To compare plans, see Pricing.
30.9 What AI Can and Cannot Change
AI changes only what you asked for: a variation can rewrite words, colours, pictures and settings, but not a playable's structure, events or links. A brand-new game runs isolated, with no network access and no access to the page around it, both in the editor and in the exported ad. Pictures and sounds are embedded in the project, so the exported file stays self-contained like any other.
Try it on a real template
Open the editor, pick a template and change it. Nothing to install.
Launch editor