Finance (Banks), Money tip 1.0.0
| Template | Finance (Banks), tpl_c43b789e739a |
|---|---|
| Variant | Money tip |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 14 seconds |
Example video
The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.
What it accepts
Financial education in steps: the headline, two to five numbered steps joined by a line down the side, your presenter beside them where there is room, complete on the first frame, each step then lit in turn, then a closing tip in a quiet note and the button. The legal text stays on throughout. Twelve seconds with two steps, two seconds more per further step. 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 steps, the closing tip, the call to action and the legal text. | |
clipData.section | text | up to 24 characters | Section: What the post is about, set small in capitals at the end of the header, such as Money tips or Saving. | |
clipData.headline | text | yes | up to 64 characters | Headline: The title of the tip. |
clipData.subline | text | up to 100 characters | Line under it: One or two sentences under the headline. | |
clipData.steps | list | yes | at least 2, up to 5 | Steps: Two to five steps, numbered in order and joined by a line down the side, all on the first frame, then explained one after another. Where the frame is short of height they turn pages. |
clipData.steps[] | group | Step | ||
clipData.steps[].label | text | yes | up to 48 characters | Label: The step in a few words. |
clipData.steps[].detail | text | up to 100 characters | Detail: What to do and why, in a sentence. | |
clipData.steps[].icon | enum | target, calendar, clock, timer, piggy-bank, wallet, coins, hand-coins, banknote, credit-card, receipt, calculator, percent, chart-line, chart-pie, trending-up, trending-down, scale, landmark, shield-check, lock, key-round, bell, smartphone, list-checks, clipboard-check, file-text, book-open, lightbulb, check, circle-check, house, graduation-cap, briefcase, plane, car, baby, heart, hand-heart, users, user, gift, leaf | Icon: A line icon beside the step's label. Left out, the label stands alone. | |
clipData.tip | text | up to 120 characters | Tip: A closing tip, set in a quiet framed note after the steps. | |
clipData.cta | group | Call to action: The button at the end and the line under it, such as a web address 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 phone number, a branch. | |
clipData.legal | text | up to 260 characters | Legal text: What must be shown with the post, such as that it is general information and how deposits are protected. On screen from the first frame to the last. | |
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, calm, square 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": 24,
"title": "Section",
"description": "What the post is about, set small in capitals at the end of the header, such as Money tips or Saving."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "The title of the tip."
},
"subline": {
"type": "string",
"maxLength": 100,
"title": "Line under it",
"description": "One or two sentences under the headline."
},
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 48,
"title": "Label",
"description": "The step in a few words."
},
"detail": {
"type": "string",
"maxLength": 100,
"title": "Detail",
"description": "What to do and why, in a sentence."
},
"icon": {
"type": "string",
"enum": [
"target",
"calendar",
"clock",
"timer",
"piggy-bank",
"wallet",
"coins",
"hand-coins",
"banknote",
"credit-card",
"receipt",
"calculator",
"percent",
"chart-line",
"chart-pie",
"trending-up",
"trending-down",
"scale",
"landmark",
"shield-check",
"lock",
"key-round",
"bell",
"smartphone",
"list-checks",
"clipboard-check",
"file-text",
"book-open",
"lightbulb",
"check",
"circle-check",
"house",
"graduation-cap",
"briefcase",
"plane",
"car",
"baby",
"heart",
"hand-heart",
"users",
"user",
"gift",
"leaf"
],
"title": "Icon",
"description": "A line icon beside the step's label. Left out, the label stands alone.",
"enumNames": [
"Target",
"Calendar",
"Clock",
"Timer",
"Piggy bank",
"Wallet",
"Coins",
"Hand coins",
"Banknote",
"Credit card",
"Receipt",
"Calculator",
"Percent",
"Chart line",
"Chart pie",
"Trending up",
"Trending down",
"Scale",
"Landmark",
"Shield check",
"Lock",
"Key round",
"Bell",
"Smartphone",
"List checks",
"Clipboard check",
"File text",
"Book open",
"Lightbulb",
"Check",
"Circle check",
"House",
"Graduation cap",
"Briefcase",
"Plane",
"Car",
"Baby",
"Heart",
"Hand heart",
"Users",
"User",
"Gift",
"Leaf"
]
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Step"
},
"minItems": 2,
"maxItems": 5,
"title": "Steps",
"description": "Two to five steps, numbered in order and joined by a line down the side, all on the first frame, then explained one after another. Where the frame is short of height they turn pages."
},
"tip": {
"type": "string",
"maxLength": 120,
"title": "Tip",
"description": "A closing tip, set in a quiet framed note after the steps."
},
"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 phone number, a branch."
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address or a phone number."
},
"legal": {
"type": "string",
"maxLength": 260,
"title": "Legal text",
"description": "What must be shown with the post, such as that it is general information and how deposits are protected. On screen from the first frame to the last."
},
"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, calm, square corners, text at the start."
}
},
"required": [
"headline",
"steps"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the headline, the steps, the closing tip, the call to action and the legal text."
},
"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": 24,
"title": "Section",
"description": "What the post is about, set small in capitals at the end of the header, such as Money tips or Saving."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "The title of the tip."
},
"subline": {
"type": "string",
"maxLength": 100,
"title": "Line under it",
"description": "One or two sentences under the headline."
},
"steps": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string",
"maxLength": 48,
"title": "Label",
"description": "The step in a few words."
},
"detail": {
"type": "string",
"maxLength": 100,
"title": "Detail",
"description": "What to do and why, in a sentence."
},
"icon": {
"type": "string",
"enum": [
"target",
"calendar",
"clock",
"timer",
"piggy-bank",
"wallet",
"coins",
"hand-coins",
"banknote",
"credit-card",
"receipt",
"calculator",
"percent",
"chart-line",
"chart-pie",
"trending-up",
"trending-down",
"scale",
"landmark",
"shield-check",
"lock",
"key-round",
"bell",
"smartphone",
"list-checks",
"clipboard-check",
"file-text",
"book-open",
"lightbulb",
"check",
"circle-check",
"house",
"graduation-cap",
"briefcase",
"plane",
"car",
"baby",
"heart",
"hand-heart",
"users",
"user",
"gift",
"leaf"
],
"title": "Icon",
"description": "A line icon beside the step's label. Left out, the label stands alone.",
"enumNames": [
"Target",
"Calendar",
"Clock",
"Timer",
"Piggy bank",
"Wallet",
"Coins",
"Hand coins",
"Banknote",
"Credit card",
"Receipt",
"Calculator",
"Percent",
"Chart line",
"Chart pie",
"Trending up",
"Trending down",
"Scale",
"Landmark",
"Shield check",
"Lock",
"Key round",
"Bell",
"Smartphone",
"List checks",
"Clipboard check",
"File text",
"Book open",
"Lightbulb",
"Check",
"Circle check",
"House",
"Graduation cap",
"Briefcase",
"Plane",
"Car",
"Baby",
"Heart",
"Hand heart",
"Users",
"User",
"Gift",
"Leaf"
]
}
},
"required": [
"label"
],
"additionalProperties": false,
"title": "Step"
},
"minItems": 2,
"maxItems": 5,
"title": "Steps",
"description": "Two to five steps, numbered in order and joined by a line down the side, all on the first frame, then explained one after another. Where the frame is short of height they turn pages."
},
"tip": {
"type": "string",
"maxLength": 120,
"title": "Tip",
"description": "A closing tip, set in a quiet framed note after the steps."
},
"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 phone number, a branch."
}
},
"additionalProperties": false,
"title": "Call to action",
"description": "The button at the end and the line under it, such as a web address or a phone number."
},
"legal": {
"type": "string",
"maxLength": 260,
"title": "Legal text",
"description": "What must be shown with the post, such as that it is general information and how deposits are protected. On screen from the first frame to the last."
},
"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, calm, square corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the section, the headline, the steps, the closing tip, the call to action and the legal text."
},
"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_c43b789e739a?variant=Money%20tip&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": "Money tips",
"headline": "Three steps to an emergency fund",
"subline": "A cushion for the unexpected, built a little at a time.",
"steps": [
{
"icon": "target",
"label": "Set your target",
"detail": "Aim for three months of essential spending, then work out what that means each month."
},
{
"icon": "calendar",
"label": "Pay yourself first",
"detail": "Move a fixed amount into savings on payday, automatically, before you spend."
},
{
"icon": "piggy-bank",
"label": "Keep it apart, and within reach",
"detail": "An easy access account keeps the money separate, yet there the day you need it."
}
],
"tip": "Top the fund up whenever you get a pay rise or a refund, and rebuild it after you use it.",
"cta": {
"label": "Open an easy access saver",
"detail": "alpstein.example/save"
},
"legal": "General information only, not personal financial advice. Eligible deposits are protected up to 100,000 by the national deposit guarantee scheme.",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Three steps to an emergency fund",
"captionTiny": "Three steps to an emergency fund: set your target, pay yourself first and keep it apart, yet within reach. General information, not advice.",
"captionShort": "An emergency fund turns a surprise bill into an inconvenience rather than a crisis. Three steps: set a target of about three months of essential spending, pay yourself first with an automatic transfer on payday, and keep the money in a separate easy access account. General information, not personal financial advice.",
"captionMedium": "An emergency fund turns a surprise bill, a repair or a gap between jobs into an inconvenience rather than a crisis. Here is how to build one in three steps. First, set your target: about three months of essential spending, such as rent, bills and food, then work out what that means each month. Second, pay yourself first: set up an automatic transfer into savings on payday, before you spend. Third, keep it apart, and within reach: an easy access account keeps the money separate from everyday spending, yet there the day you need it. Top it up with every pay rise or refund. General information only, not personal financial advice.",
"captionLong": "An emergency fund turns a surprise bill, a car repair or a gap between jobs into an inconvenience rather than a crisis, and it means you are less likely to reach for a credit card or an overdraft when something goes wrong. Here is how to build one in three steps. First, set your target. A common aim is three months of essential spending: add up rent or mortgage, bills, food and travel, then divide the total into monthly amounts you can manage. Second, pay yourself first. Set up a standing order into savings for payday, so the money moves before you have a chance to spend it; even a small amount adds up. Third, keep it apart, and within reach. An easy access savings account keeps the fund separate from your everyday spending, yet the money is there the day you need it. Whenever you get a pay rise, a bonus or a refund, top the fund up, and if you use it, start rebuilding straight away. This is general information only, not personal financial advice. Eligible deposits are protected up to 100,000 by the national deposit guarantee scheme.",
"hashtags": [
"moneytips",
"emergencyfund",
"saving",
"personalfinance",
"budgeting"
]
}
}
}
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.