Tech and industry (Software and SaaS), Pricing plans 1.0.0
| Template | Tech and industry (Software and SaaS), tpl_fe11839b9ed7 |
|---|---|
| Variant | Pricing plans |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 13 seconds |
Example video
The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.
What it accepts
Your plans as a pricing table in a bento of rounded tiles: two to four plans, each its name, its price and period, who it is for and up to six things it adds with a tick, the recommended one on your colour with a chip. Each plan is lit in turn, then the button and your presenter. The small print stays throughout. Five and a half seconds, 2.5 more a plan. metaData is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the section, the headline, the sentence and the note, the plans with their prices and what they add, the call to action and the small print. | |
clipData.section | text | up to 28 characters | Section: What the post is about, on a chip at the end of the header, such as Pricing or Plans. | |
clipData.chip | text | up to 16 characters | Kind of news: On a chip with a pulsing dot above the headline, such as New plans or Pricing. | |
clipData.headline | text | yes | up to 48 characters | Headline: The headline of the post. |
clipData.summary | text | up to 140 characters | Sentence: A sentence under the headline, such as how to start or switch. | |
clipData.note | text | up to 64 characters | Note: A line beside a tick under the sentence and on a chip at the end, such as a yearly saving or a trial on every plan. Say its conditions here or in the small print. | |
clipData.currency | text | up to 3 characters | Currency: The currency of every price given as a figure, as its three-letter code, such as USD, EUR or GBP. Each price is then written the way your channel's language writes that currency. | |
clipData.plans | list | yes | at least 2, up to 4 | Plans: Two to four plans, in the order they are read, each on a tile of its own and lit one after another. Where a frame is short of room, the plans become tabs and the one being read shows what it adds. |
clipData.plans[] | group | Plan | ||
clipData.plans[].name | text | yes | up to 24 characters | Name: The plan's name. |
clipData.plans[].price | number | from 0, 2 decimals | Price: The price as a figure, drawn exactly as sent in your currency, such as 12 or 9.50. Leave it out to show the words below instead. | |
clipData.plans[].priceText | text | up to 16 characters | Price in words: Shown in place of a price where none is sent as a figure, such as Free or Custom. | |
clipData.plans[].period | text | up to 32 characters | Period: What the price is for, beside or under it, such as per user a month. | |
clipData.plans[].line | text | up to 72 characters | Who it is for: Who the plan is for, in a sentence under the price. | |
clipData.plans[].lead | text | up to 40 characters | Above the list: A line above what the plan adds, such as Everything in Free, plus. | |
clipData.plans[].features | list | yes | at least 1, up to 6 | What it adds: One to six things the plan includes or adds, each beside a tick. |
clipData.plans[].features[] | text | up to 48 characters | Feature | |
clipData.plans[].recommended | boolean | Recommended: The plan you recommend: on a tile of your colour, with the chip below. Only the first plan marked counts. | ||
clipData.recommendedLabel | text | up to 20 characters | Chip on the recommended plan: The word on the recommended plan's chip, such as Most popular or Best value. | |
clipData.cta | group | Call to action: The button at the end and the line under it, such as a web address, a handle or a phone number. | ||
clipData.cta.label | text | yes | up to 28 characters | Button: What the button says. |
clipData.cta.detail | text | up to 48 characters | Line under it: An address, a handle, an app, a phone number. | |
clipData.footnote | text | up to 300 characters | Small print: What must be said with the post, shown from the first frame to the last above your brand's footer line: whether prices include tax, how they are billed, trademarks. A long one is set smaller, never cut. | |
clipData.look | group | Look: How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, round corners, text at the start. | ||
clipData.look.theme | enum | brand, light, dark, bold | Theme: Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page. | |
clipData.look.pace | enum | calm, standard, punchy | Pace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts. | |
clipData.look.corners | enum | square, soft, round | Corners: The shape of cards, pictures and buttons. | |
clipData.look.align | enum | start, centre | Text alignment: Where the text lines up. | |
clipData.look.logo | enum | auto, free | Logo: The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose. | |
clipData.look.logoSize | enum | auto, small, large | Logo size: Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none. | |
metaData | group | Meta data: Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data. | ||
metaData.title | text | up to 100 characters | Title: Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes. | |
metaData.captionTiny | text | up to 200 characters | Tiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionShort | text | up to 500 characters | Short description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionMedium | text | up to 1500 characters | Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok): Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.captionLong | text | up to 4000 characters | Long description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit. | |
metaData.hashtags | list | up to 15 | Hashtags: Written without the #. Up to 15, which every platform takes. | |
metaData.hashtags[] | text | up to 60 characters | Hashtag |
locales carries other languages: under each language code, the parts of clipData and metaData that differ, laid over the default, so a language with no copy still renders.
A picture is always a file from your media library: media:// followed by its id or its name.
Anything the table does not list is refused, and so is anything over its limit, with a 400
schema_validation error that names the field.
The JSON Schema
{
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"section": {
"type": "string",
"maxLength": 28,
"title": "Section",
"description": "What the post is about, on a chip at the end of the header, such as Pricing or Plans."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of news",
"description": "On a chip with a pulsing dot above the headline, such as New plans or Pricing."
},
"headline": {
"type": "string",
"maxLength": 48,
"title": "Headline",
"description": "The headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "Sentence",
"description": "A sentence under the headline, such as how to start or switch."
},
"note": {
"type": "string",
"maxLength": 64,
"title": "Note",
"description": "A line beside a tick under the sentence and on a chip at the end, such as a yearly saving or a trial on every plan. Say its conditions here or in the small print."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The currency of every price given as a figure, as its three-letter code, such as USD, EUR or GBP. Each price is then written the way your channel's language writes that currency."
},
"plans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 24,
"title": "Name",
"description": "The plan's name."
},
"price": {
"type": "number",
"minimum": 0,
"title": "Price",
"description": "The price as a figure, drawn exactly as sent in your currency, such as 12 or 9.50. Leave it out to show the words below instead."
},
"priceText": {
"type": "string",
"maxLength": 16,
"title": "Price in words",
"description": "Shown in place of a price where none is sent as a figure, such as Free or Custom."
},
"period": {
"type": "string",
"maxLength": 32,
"title": "Period",
"description": "What the price is for, beside or under it, such as per user a month."
},
"line": {
"type": "string",
"maxLength": 72,
"title": "Who it is for",
"description": "Who the plan is for, in a sentence under the price."
},
"lead": {
"type": "string",
"maxLength": 40,
"title": "Above the list",
"description": "A line above what the plan adds, such as Everything in Free, plus."
},
"features": {
"type": "array",
"items": {
"type": "string",
"maxLength": 48,
"title": "Feature"
},
"minItems": 1,
"maxItems": 6,
"title": "What it adds",
"description": "One to six things the plan includes or adds, each beside a tick."
},
"recommended": {
"type": "boolean",
"title": "Recommended",
"description": "The plan you recommend: on a tile of your colour, with the chip below. Only the first plan marked counts."
}
},
"required": [
"name",
"features"
],
"additionalProperties": false,
"title": "Plan"
},
"minItems": 2,
"maxItems": 4,
"title": "Plans",
"description": "Two to four plans, in the order they are read, each on a tile of its own and lit one after another. Where a frame is short of room, the plans become tabs and the one being read shows what it adds."
},
"recommendedLabel": {
"type": "string",
"maxLength": 20,
"title": "Chip on the recommended plan",
"description": "The word on the recommended plan's chip, such as Most popular or Best value."
},
"cta": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Button",
"description": "What the button says."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "An address, a handle, an app, a phone number."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address, a handle or a phone number."
},
"footnote": {
"type": "string",
"maxLength": 300,
"title": "Small print",
"description": "What must be said with the post, shown from the first frame to the last above your brand's footer line: whether prices include tax, how they are billed, trademarks. A long one is set smaller, never cut."
},
"look": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": [
"brand",
"light",
"dark",
"bold"
],
"title": "Theme",
"description": "Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.",
"enumNames": [
"Brand colours",
"Light",
"Dark",
"Bold brand colour"
]
},
"pace": {
"type": "string",
"enum": [
"calm",
"standard",
"punchy"
],
"title": "Pace",
"description": "How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.",
"enumNames": [
"Calm",
"Standard",
"Punchy"
]
},
"corners": {
"type": "string",
"enum": [
"square",
"soft",
"round"
],
"title": "Corners",
"description": "The shape of cards, pictures and buttons.",
"enumNames": [
"Square",
"Softly rounded",
"Round"
]
},
"align": {
"type": "string",
"enum": [
"start",
"centre"
],
"title": "Text alignment",
"description": "Where the text lines up.",
"enumNames": [
"At the start of the line",
"Centred"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
},
"logoSize": {
"type": "string",
"enum": [
"auto",
"small",
"large"
],
"title": "Logo size",
"description": "Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.",
"enumNames": [
"Standard",
"Small",
"Large"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, round corners, text at the start."
}
},
"required": [
"headline",
"plans"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the headline, the sentence and the note, the plans with their prices and what they add, the call to action and the small print."
},
"metaData": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 100,
"title": "Title",
"description": "Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes."
},
"captionTiny": {
"type": "string",
"maxLength": 200,
"title": "Tiny description (Pinterest, Threads, X)",
"description": "Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionShort": {
"type": "string",
"maxLength": 500,
"title": "Short description (Telegram, Threema, WeChat, WhatsApp)",
"description": "Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionMedium": {
"type": "string",
"maxLength": 1500,
"title": "Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok)",
"description": "Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionLong": {
"type": "string",
"maxLength": 4000,
"title": "Long description (Facebook Feed, YouTube)",
"description": "Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"title": "Hashtag"
},
"maxItems": 15,
"title": "Hashtags",
"description": "Written without the #. Up to 15, which every platform takes."
}
},
"additionalProperties": false,
"title": "Meta data",
"description": "Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data."
},
"locales": {
"type": "object",
"additionalProperties": {
"type": "object",
"properties": {
"clipData": {
"type": "object",
"properties": {
"section": {
"type": "string",
"maxLength": 28,
"title": "Section",
"description": "What the post is about, on a chip at the end of the header, such as Pricing or Plans."
},
"chip": {
"type": "string",
"maxLength": 16,
"title": "Kind of news",
"description": "On a chip with a pulsing dot above the headline, such as New plans or Pricing."
},
"headline": {
"type": "string",
"maxLength": 48,
"title": "Headline",
"description": "The headline of the post."
},
"summary": {
"type": "string",
"maxLength": 140,
"title": "Sentence",
"description": "A sentence under the headline, such as how to start or switch."
},
"note": {
"type": "string",
"maxLength": 64,
"title": "Note",
"description": "A line beside a tick under the sentence and on a chip at the end, such as a yearly saving or a trial on every plan. Say its conditions here or in the small print."
},
"currency": {
"type": "string",
"maxLength": 3,
"title": "Currency",
"description": "The currency of every price given as a figure, as its three-letter code, such as USD, EUR or GBP. Each price is then written the way your channel's language writes that currency."
},
"plans": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 24,
"title": "Name",
"description": "The plan's name."
},
"price": {
"type": "number",
"minimum": 0,
"title": "Price",
"description": "The price as a figure, drawn exactly as sent in your currency, such as 12 or 9.50. Leave it out to show the words below instead."
},
"priceText": {
"type": "string",
"maxLength": 16,
"title": "Price in words",
"description": "Shown in place of a price where none is sent as a figure, such as Free or Custom."
},
"period": {
"type": "string",
"maxLength": 32,
"title": "Period",
"description": "What the price is for, beside or under it, such as per user a month."
},
"line": {
"type": "string",
"maxLength": 72,
"title": "Who it is for",
"description": "Who the plan is for, in a sentence under the price."
},
"lead": {
"type": "string",
"maxLength": 40,
"title": "Above the list",
"description": "A line above what the plan adds, such as Everything in Free, plus."
},
"features": {
"type": "array",
"items": {
"type": "string",
"maxLength": 48,
"title": "Feature"
},
"minItems": 1,
"maxItems": 6,
"title": "What it adds",
"description": "One to six things the plan includes or adds, each beside a tick."
},
"recommended": {
"type": "boolean",
"title": "Recommended",
"description": "The plan you recommend: on a tile of your colour, with the chip below. Only the first plan marked counts."
}
},
"required": [
"name",
"features"
],
"additionalProperties": false,
"title": "Plan"
},
"minItems": 2,
"maxItems": 4,
"title": "Plans",
"description": "Two to four plans, in the order they are read, each on a tile of its own and lit one after another. Where a frame is short of room, the plans become tabs and the one being read shows what it adds."
},
"recommendedLabel": {
"type": "string",
"maxLength": 20,
"title": "Chip on the recommended plan",
"description": "The word on the recommended plan's chip, such as Most popular or Best value."
},
"cta": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 28,
"title": "Button",
"description": "What the button says."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "An address, a handle, an app, a phone number."
}
},
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address, a handle or a phone number."
},
"footnote": {
"type": "string",
"maxLength": 300,
"title": "Small print",
"description": "What must be said with the post, shown from the first frame to the last above your brand's footer line: whether prices include tax, how they are billed, trademarks. A long one is set smaller, never cut."
},
"look": {
"type": "object",
"properties": {
"theme": {
"type": "string",
"enum": [
"brand",
"light",
"dark",
"bold"
],
"title": "Theme",
"description": "Brand: your brand's own colours and background. Light or dark: a page tinted with your brand colour. Bold: your brand colour as the page.",
"enumNames": [
"Brand colours",
"Light",
"Dark",
"Bold brand colour"
]
},
"pace": {
"type": "string",
"enum": [
"calm",
"standard",
"punchy"
],
"title": "Pace",
"description": "How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.",
"enumNames": [
"Calm",
"Standard",
"Punchy"
]
},
"corners": {
"type": "string",
"enum": [
"square",
"soft",
"round"
],
"title": "Corners",
"description": "The shape of cards, pictures and buttons.",
"enumNames": [
"Square",
"Softly rounded",
"Round"
]
},
"align": {
"type": "string",
"enum": [
"start",
"centre"
],
"title": "Text alignment",
"description": "Where the text lines up.",
"enumNames": [
"At the start of the line",
"Centred"
]
},
"logo": {
"type": "string",
"enum": [
"auto",
"free"
],
"title": "Logo",
"description": "The style's own: the logo on a small plate so it reads on any page. As it is: the logo whole, with no plate, frame or crop, for a logo made to stand on the page, such as one with a transparent background. As it is, make sure your logo reads on the page of the theme you choose.",
"enumNames": [
"The style's own",
"As it is, no plate or crop"
]
},
"logoSize": {
"type": "string",
"enum": [
"auto",
"small",
"large"
],
"title": "Logo size",
"description": "Standard is the style's own size. Small draws the logo a fifth smaller, with its plate. Large draws it a quarter larger wherever the style has room for it, and at the standard size where it has none.",
"enumNames": [
"Standard",
"Small",
"Large"
]
}
},
"additionalProperties": false,
"title": "Look",
"description": "How the clip looks and moves. The same six switches in every format (theme, pace, corners, alignment, logo, logo size). Leave any out for the package's default: the brand's colours, standard pace, round corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the headline, the sentence and the note, the plans with their prices and what they add, the call to action and the small print."
},
"metaData": {
"type": "object",
"properties": {
"title": {
"type": "string",
"maxLength": 100,
"title": "Title",
"description": "Used where the platform has a title of its own: Facebook Feed, LinkedIn, Pinterest and YouTube. Up to 100 characters, which every one of them takes."
},
"captionTiny": {
"type": "string",
"maxLength": 200,
"title": "Tiny description (Pinterest, Threads, X)",
"description": "Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionShort": {
"type": "string",
"maxLength": 500,
"title": "Short description (Telegram, Threema, WeChat, WhatsApp)",
"description": "Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionMedium": {
"type": "string",
"maxLength": 1500,
"title": "Medium description (Discord, Facebook Reels, Instagram, LinkedIn, Signal, Slack, TikTok)",
"description": "Up to 1500 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"captionLong": {
"type": "string",
"maxLength": 4000,
"title": "Long description (Facebook Feed, YouTube)",
"description": "Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit."
},
"hashtags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"title": "Hashtag"
},
"maxItems": 15,
"title": "Hashtags",
"description": "Written without the #. Up to 15, which every platform takes."
}
},
"additionalProperties": false,
"title": "Meta data",
"description": "Everything about the post that is never drawn in the clip: its title, its description in four lengths, one per kind of platform, and its hashtags. Reelwire adds the brand's description, link and hashtags after it. Left out, the post text is generated from the clip data."
}
},
"additionalProperties": false
},
"propertyNames": {
"enum": [
"aa",
"ab",
"ae",
"af",
"ak",
"am",
"an",
"ar",
"as",
"av",
"ay",
"az",
"ba",
"be",
"bg",
"bi",
"bm",
"bn",
"bo",
"br",
"bs",
"ca",
"ce",
"ch",
"co",
"cr",
"cs",
"cu",
"cv",
"cy",
"da",
"de",
"dv",
"dz",
"ee",
"el",
"en",
"eo",
"es",
"et",
"eu",
"fa",
"ff",
"fi",
"fj",
"fo",
"fr",
"fy",
"ga",
"gd",
"gl",
"gn",
"gu",
"gv",
"ha",
"he",
"hi",
"ho",
"hr",
"ht",
"hu",
"hy",
"hz",
"ia",
"id",
"ie",
"ig",
"ii",
"ik",
"io",
"is",
"it",
"iu",
"ja",
"jv",
"ka",
"kg",
"ki",
"kj",
"kk",
"kl",
"km",
"kn",
"ko",
"kr",
"ks",
"ku",
"kv",
"kw",
"ky",
"la",
"lb",
"lg",
"li",
"ln",
"lo",
"lt",
"lu",
"lv",
"mg",
"mh",
"mi",
"mk",
"ml",
"mn",
"mr",
"ms",
"mt",
"my",
"na",
"nb",
"nd",
"ne",
"ng",
"nl",
"nn",
"no",
"nr",
"nv",
"ny",
"oc",
"oj",
"om",
"or",
"os",
"pa",
"pi",
"pl",
"ps",
"pt",
"qu",
"rm",
"rn",
"ro",
"ru",
"rw",
"sa",
"sc",
"sd",
"se",
"sg",
"si",
"sk",
"sl",
"sm",
"sn",
"so",
"sq",
"sr",
"ss",
"st",
"su",
"sv",
"sw",
"ta",
"te",
"tg",
"th",
"ti",
"tk",
"tl",
"tn",
"to",
"tr",
"ts",
"tt",
"tw",
"ty",
"ug",
"uk",
"ur",
"uz",
"ve",
"vi",
"vo",
"wa",
"wo",
"xh",
"yi",
"yo",
"za",
"zh",
"zu",
"zh-CN",
"zh-TW",
"pt-BR"
]
}
}
},
"required": [
"clipData"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
Ask Reelwire for the same document yourself, without signing in:
curl "http://localhost:4000/v1/formats/template/tpl_fe11839b9ed7?variant=Pricing%20plans&version=1.0.0"
Delivery JSON
Your own system sends this to one of your streams, POST /v1/stream, and every channel listening to
that stream draws it with its template. data is the document described above; a stream with an
empty field map passes it to the template unchanged. Try it first on POST /v1/stream/validate,
which answers the same without publishing anything. Streams and feeds
explains the rest, including how to map a document of your own shape instead.
{
"streamId": "st_your_stream_id",
"eventId": "01M2SQMKK3G1NVFXV31DCBVB95",
"occurredAt": "2026-09-23T07:00:00Z",
"locale": "en",
"data": {
"clipData": {
"section": "Plans and pricing",
"chip": "Simple pricing",
"headline": "A plan for every team",
"summary": "Start free and upgrade as you grow. Change plans or cancel at any time.",
"note": "Save 20% when you pay yearly",
"currency": "USD",
"plans": [
{
"line": "For trying Flowbase with a small team",
"name": "Free",
"price": 0,
"period": "for up to 3 people",
"features": [
"3 projects",
"Board, list and calendar views",
"Slack and email integrations",
"7 days of history"
]
},
{
"lead": "Everything in Free, plus",
"line": "For teams that run their work in Flowbase",
"name": "Pro",
"price": 12,
"period": "per user a month",
"features": [
"Unlimited projects",
"Workflow automations",
"Timelines and dashboards",
"Guest access"
],
"recommended": true
},
{
"lead": "Everything in Pro, plus",
"line": "For companies with many teams",
"name": "Business",
"price": 24,
"period": "per user a month",
"features": [
"Single sign-on (SAML)",
"Admin roles and audit log",
"Advanced automations",
"Priority support"
]
}
],
"recommendedLabel": "Most popular",
"cta": {
"label": "Compare all plans",
"detail": "flowbase.example/pricing"
},
"footnote": "Prices in US dollars per user a month, billed monthly. Prices exclude VAT and sales tax. Flowbase is a trademark of Flowbase Inc.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "round",
"logoSize": "auto"
}
},
"metaData": {
"title": "Flowbase pricing: a plan for every team",
"captionTiny": "A plan for every team: start on Flowbase Free, or go Pro at $12 per user a month. Save 20% when you pay yearly.",
"captionShort": "A plan for every team. Free for up to 3 people, Pro at $12 per user a month with unlimited projects and workflow automations, and Business at $24 with single sign-on and an audit log. Save 20% when you pay yearly. Prices exclude VAT and sales tax.",
"captionMedium": "A plan for every team. Start on Free with 3 projects for up to 3 people. Pro is $12 per user a month and adds unlimited projects, workflow automations, timelines and dashboards, and guest access. Business is $24 per user a month and adds single sign-on, admin roles with an audit log, advanced automations and priority support. Save 20% when you pay yearly, and change plans or cancel at any time. Prices are per user a month, billed monthly, and exclude VAT and sales tax.",
"captionLong": "A plan for every team. Start on Free with 3 projects, board, list and calendar views and Slack and email integrations for up to 3 people. Pro is $12 per user a month and adds unlimited projects, workflow automations, timelines and dashboards, and guest access for clients and freelancers, and it is the plan most teams choose. Business is $24 per user a month and adds single sign-on with SAML, admin roles with an audit log, advanced automations and priority support for companies with many teams. Save 20% when you pay yearly, and change plans or cancel at any time from your workspace settings. Compare every plan at flowbase.example/pricing. Prices are per user a month, billed monthly, and exclude VAT and sales tax. Flowbase is a trademark of Flowbase Inc.",
"hashtags": [
"pricing",
"saas",
"productivity",
"projectmanagement",
"teamwork"
]
}
}
}
The delivery names no version: which build draws it is the channel's choice, the newest of its
variant or the one it is pinned to. eventId is a ULID you make once per event: sending the same
one again changes nothing. occurredAt is when the thing happened, not when you sent it. locale
is the language of the text in data, and data.locales carries other languages beside it.