Personalized and evergreen video
Video library matching, upload flow, and when each mode applies.
Last updated: May 2026
Two delivery modes
Sequence video steps support:
| Mode | Behaviour |
|---|---|
Personalized (matchByName: true) | Selects a per-prospect asset by matching prospect first name against video library name rows |
Evergreen (matchByName: false) | One shared asset (videoId / videoUrl) for all prospects in that step |
Manual vs AI-generated provenance is tracked via origin metadata (manual vs generated) separate from file naming.
Uploads and storage
Uploads use presigned URLs with structured object keys:
{workspace_slug}/{asset_type}/{origin}/{language}/{file}
Evergreen sequence uploads (Sequences → Video → Evergreen → Upload video) must use presign → upload → finalize; saved steps store videoId and the Backblaze path in metadata, not temporary browser URLs. Use the VSL | Trojan toggle so video_type matches the asset you intend to send. Default upload language is en until the editor exposes a language control.
Engineering contract (field-by-field): docs/specs/domains/videos.md in the repo.
Environment-scoped buckets isolate prod/stage/dev; tenant isolation is enforced at API/DB layers rather than per-client bucket sprawl.
Practical tips
- Keep first names in library aligned with enrichment quality—nickname mismatches skip matches silently.
- Large files: allow time for upload + CDN/propagation before sequencing volume spikes.
- Validate language metadata for international campaigns.
Related
Video steps chain with Sequences and automated follow-ups and may interact with stop-on-reply logic when prospects engage mid-funnel.