Managed marketing campaigns

From your data to their inbox, in three steps and one team.

Spreadsheet in. Personalized assets out. Deterministic, multi-format, 500K records per batch. Built by the team behind Spotify Songwriter Wrapped.

The proof
7,000 assets
Delivered in 72 hours
87%
Day-one open rate
44%
Day-one share downloads
Spotify Songwriter Wrapped, 2022.
Industry benchmarks: 25-30% open rate, 2-5% download rate.

The work

The whole thing, in three steps.

Ditto isn't a self-serve template tool. It's a managed campaign service. You bring the data and the moment; we render and deliver.

01

Hand us a list

Names, photos, milestones, stats, locations. The attributes that make each recipient specific. No CDP, CRM integration, or new pipeline required. CSV, Airtable, or a REST API. Whatever you already have.

02

We render the campaign

Designer-led HTML/CSS templates, your data interpolated. Video first, plus images, carousels, share cards, PDFs. Every asset made for one specific person, every recipient gets their own.

03

We deliver it

Managed send across email, SMS, in-app, and social channels. We handle the orchestration. Webhooks fire to whatever runs downstream. Your team handles the spike in inbound.

The platform

Now you can see the machine.

Ditto is still managed. We build the template, run the render, and handle the send. What changed is that you can watch it happen. Your campaign lives in a client portal where you review the work, approve it, send us files, and talk to the team, with the render and the delivery reporting in behind it.

Client portal

Your campaign, in one place.

Review the work and approve it, upload your files, run intake, message the team, handle billing. It runs on Assembly, a SOC 2-attested client portal, so the place your data meets humans sits on an audited surface instead of something we stood up ourselves.

Rendering and delivery stay in Ditto's own engine. The seam between the two is documented on the security page.

Pathfinder

Start with a conversation.

Pathfinder is where a campaign gets shaped: what the moment is, who it goes to, and what data it would take to build. You describe it in plain language rather than filling in a brief template and waiting three days for a reply.

Render queue

Watch the batch run.

Rendering is deterministic, not generative. The same row always produces the same asset, so a re-run is a re-run and not a new roll of the dice. Nothing is invented, and the queue reports exactly what is done.

Output gallery

One asset per recipient.

Not one design with a name dropped into it. Each asset is built from that person's own row: their stats, their photo, their milestone, their year. Scroll the gallery and no two are the same.

Delivery

Delivered, then downstream.

Managed send across email, SMS, in-app, and social. Webhooks fire to whatever runs downstream, so the assets land in your stack as well as in their inbox. Your team handles the spike in inbound.

The engine

A real rendering engine, not a template tool.

Behind the three steps: a deterministic asset pipeline. Designers author HTML/CSS templates, your data drops in, the engine renders pixel-perfect output, every channel.

01

Data

  • CSV
  • Airtable
  • REST API
02

Engine

  • HTML / CSS templates
  • Headless render
  • Typography policies
03

Assets

  • Video (MP4)
  • Image (PNG, JPG)
  • Doc (PDF, SVG)
04

Delivery

  • Email · SMS
  • In-app · social
  • Webhooks downstream
Brand safety

No AI rendering. No AI slop.

Every asset is drawn from a designer-led HTML/CSS template, rendered deterministically. No diffusion model hallucinations, no awkward fingers, no generic stock vibe. Your brand gets the look it earned.

Personalization at video scale

A unique video for every recipient.

Not a single explainer with a name swapped on top. Every recipient gets their own video — their data, their photo, their story — rendered as MP4 with auto-generated poster frames so social previews look intentional.

Deterministic

Same data in. Same pixels out.

Every render is reproducible to the byte. Approve once, ship to a million recipients, audit any single asset later — they'll all match exactly what you signed off on.

Byte-identical output
Multi-format, one pass

PNG, JPG, PDF, MP4, SVG, from one template.

One designer-authored template renders every format your channels need in a single pipeline run. No re-export gauntlet, no per-format dance, no broken aspect ratios.

5 formats · 1 pipeline
Scale

500,000+ records per batch.

Designed for the campaign that hits every member of your audience. Horizontally scaled, individually retryable, individually resumable. Spotify Songwriter Wrapped shipped 7,000 in 72 hours; the engine stretches well past that.

Production-tested
Hand-crafted at scale

"Maximiliano Bonifacio Rodríguez" doesn't break the layout.

Typography policies (shrink, clamp) run inside the headless browser, after layout. Long names size down. Lines clamp with ellipsis where you choose. Every output looks designed.

Browser-side typesetting

Security receipts

Fail-closed, in depth, by default.

Webhook signatures verified on the raw bytes. SSRF blocked at the browser layer. PII fields redacted before logging. Real engineering, not a checkbox.

15 / 15

External audit findings closed (April 2026, across 6 PRs).

0 fail-open

Misconfigured deploys refuse to boot. No silent dev fallback in production.

1 : 1

Per-client API keys. One PAT per client base. One leak isn't everyone's leak.

Why managed

The line between a tool you fight with and a campaign that ships.

Self-serve template tools

You hand-build, you fight the limits, you ship if you can.

  • You learn another platform. Then teach your team.
  • You hit row caps, format caps, font caps, layout caps.
  • Long names overflow. Edge cases stop the campaign.
  • You QA every asset yourself, or accept inconsistency.
  • You handle the send. You handle the failure.
Ditto, the managed service

You hand us a list. We hand you a campaign.

  • One brief, thousands of variants. Designers + engineers + delivery, on our side.
  • No volume cap. Your audience is the only ceiling.
  • Edge cases handled by policy, not by panic.
  • Every asset rendered byte-identical to your approval.
  • We send. We monitor. You handle the inbound.

We tell you when each tool wins, including against us. If you have engineers ready to build the pipeline, the API tools win. If you don't, this is the work.

See all 12 comparisons
Proof of pipeline

7,000 personalized assets. Same day Spotify Wrapped launched.

Spotify Songwriter Wrapped, 2022. One brief, 7,000 unique recipients across 70+ markets, every asset built from one designer-led template. Three years later, the format is part of mainstream Spotify Wrapped. We built that engine — and it's the same one that runs your campaign.

7,000 assets 87% open 44% shared day one
Read the full case study

Stop renting. Start owning.

Let's build your first campaign.

Your audience is your distribution channel. Bring the moment, the data, and the list. We'll bring the engine.