Skip to main content

Finance (Real estate), Neighbourhood guide 1.0.0

TemplateFinance (Real estate), tpl_abd904ec6309
VariantNeighbourhood guide
Version1.0.0, the newest: what a channel following this variant draws
Shapes9x16, 4x5, 1x1, 16x9, 2x3
Length18 seconds

Example video​

The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.

What it accepts​

What is near a home or an area: a map with a pin on each of two to six places (school, shop, station, park, and more), the area, the headline and a card per place, complete on the first frame. Then each pin lit in turn with its card raised, then the agent and the button. The brokerage and the disclosure stay on screen throughout. About two seconds longer per place. metaData is never drawn.

FieldTypeRequiredLimitWhat it is
clipDatagroupyesClip data: Everything drawn in the clip: the status ribbon, the area, the headline, the map with its places, the call to action, the brokerage and the disclosure.
clipData.statustextup to 24 charactersStatus ribbon: The kind of post, on the ribbon over the picture, such as Neighbourhood guide or Living here.
clipData.areatextyesup to 48 charactersArea: The area or the street the guide is about, set large over the places.
clipData.headlinetextup to 64 charactersHeadline: What the area offers, in a few words, under its name.
clipData.mapimageyesmedia:// file from the media library, alt text up to 120 charactersMap: An aerial picture or a map of the area, any shape, with its description as alt text. Each place's pin stands on it where you put it.
clipData.placeslistyesat least 2, up to 6Places: Two to six places near the home, in the order they are shown, each a pin on the map and a card beside it. Each adds a little over two seconds.
clipData.places[]groupPlace
clipData.places[].nametextyesup to 32 charactersName: The place's name, such as Larkspur Park or Parkside Primary School.
clipData.places[].kindenumschool, shop, station, park, cafe, doctor, gym, beach, otherKind: What kind of place it is, drawn as an icon in its pin and on its card. Left out, a plain pin.
clipData.places[].distancetextup to 16 charactersDistance: How far it is, as you write it, such as 4 min walk or 1.2 km.
clipData.places[].xnumberyesfrom 0, to 1, 3 decimalsAcross: Where the pin stands across the map, from 0 at its left edge to 1 at its right edge.
clipData.places[].ynumberyesfrom 0, to 1, 3 decimalsDown: Where the pin stands down the map, from 0 at its top edge to 1 at its foot.
clipData.ctagroupCall 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.labeltextyesup to 28 charactersButton: What the button says.
clipData.cta.detailtextup to 48 charactersLine under it: An address, a handle, an app, a phone number.
clipData.brokeragetextyesup to 60 charactersBrokerage: Your licensed brokerage name, set prominently in the header on every frame.
clipData.disclosuretextup to 300 charactersDisclosure: The licence and the statements the law asks for, shown above your footer line from the first frame to the last. A long one is set smaller, never cut.
clipData.lookgroupLook: 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, softly rounded, text at the start.
clipData.look.themeenumbrand, light, dark, boldTheme: 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.paceenumcalm, standard, punchyPace: How things arrive: calm fades, a standard rhythm, or punchy slams and hard cuts.
clipData.look.cornersenumsquare, soft, roundCorners: The shape of cards, pictures and buttons.
clipData.look.alignenumstart, centreText alignment: Where the text lines up.
clipData.look.logoenumauto, freeLogo: 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.logoSizeenumauto, small, largeLogo 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.
metaDatagroupMeta 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.titletextup to 100 charactersTitle: 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.captionTinytextup to 200 charactersTiny description (Pinterest, Threads, X): Up to 200 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionShorttextup to 500 charactersShort description (Telegram, Threema, WeChat, WhatsApp): Up to 500 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.captionMediumtextup to 1500 charactersMedium 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.captionLongtextup to 4000 charactersLong description (Facebook Feed, YouTube): Up to 4000 characters. The brand's description, link and hashtags follow it within the platform's limit.
metaData.hashtagslistup to 15Hashtags: Written without the #. Up to 15, which every platform takes.
metaData.hashtags[]textup to 60 charactersHashtag

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": {
"status": {
"type": "string",
"maxLength": 24,
"title": "Status ribbon",
"description": "The kind of post, on the ribbon over the picture, such as Neighbourhood guide or Living here."
},
"area": {
"type": "string",
"maxLength": 48,
"title": "Area",
"description": "The area or the street the guide is about, set large over the places."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What the area offers, in a few words, under its name."
},
"map": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"pattern": "^media:\\/\\/[^\\s/\\\\\\u0000-\\u001f][^/\\\\\\u0000-\\u001f]{0,254}$",
"title": "Picture",
"description": "A file from the workspace's media library, written media:// and the file's id or name. A web address is refused."
},
"alt": {
"type": "string",
"maxLength": 120,
"title": "Alt text",
"description": "What the picture shows, for anyone who cannot see it."
}
},
"required": [
"url"
],
"additionalProperties": false,
"title": "Map",
"description": "An aerial picture or a map of the area, any shape, with its description as alt text. Each place's pin stands on it where you put it."
},
"places": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"title": "Name",
"description": "The place's name, such as Larkspur Park or Parkside Primary School."
},
"kind": {
"type": "string",
"enum": [
"school",
"shop",
"station",
"park",
"cafe",
"doctor",
"gym",
"beach",
"other"
],
"title": "Kind",
"description": "What kind of place it is, drawn as an icon in its pin and on its card. Left out, a plain pin.",
"enumNames": [
"School",
"Shop",
"Station",
"Park",
"Cafe",
"Doctor",
"Gym",
"Beach",
"Other"
]
},
"distance": {
"type": "string",
"maxLength": 16,
"title": "Distance",
"description": "How far it is, as you write it, such as 4 min walk or 1.2 km."
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 1,
"title": "Across",
"description": "Where the pin stands across the map, from 0 at its left edge to 1 at its right edge."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1,
"title": "Down",
"description": "Where the pin stands down the map, from 0 at its top edge to 1 at its foot."
}
},
"required": [
"name",
"x",
"y"
],
"additionalProperties": false,
"title": "Place"
},
"minItems": 2,
"maxItems": 6,
"title": "Places",
"description": "Two to six places near the home, in the order they are shown, each a pin on the map and a card beside it. Each adds a little over two seconds."
},
"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."
},
"brokerage": {
"type": "string",
"maxLength": 60,
"title": "Brokerage",
"description": "Your licensed brokerage name, set prominently in the header on every frame."
},
"disclosure": {
"type": "string",
"maxLength": 300,
"title": "Disclosure",
"description": "The licence and the statements the law asks for, shown above your footer line from the first frame to the last. 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, calm, softly rounded, text at the start."
}
},
"required": [
"area",
"map",
"places",
"brokerage"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the status ribbon, the area, the headline, the map with its places, the call to action, the brokerage and the disclosure."
},
"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": {
"status": {
"type": "string",
"maxLength": 24,
"title": "Status ribbon",
"description": "The kind of post, on the ribbon over the picture, such as Neighbourhood guide or Living here."
},
"area": {
"type": "string",
"maxLength": 48,
"title": "Area",
"description": "The area or the street the guide is about, set large over the places."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "What the area offers, in a few words, under its name."
},
"map": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"pattern": "^media:\\/\\/[^\\s/\\\\\\u0000-\\u001f][^/\\\\\\u0000-\\u001f]{0,254}$",
"title": "Picture",
"description": "A file from the workspace's media library, written media:// and the file's id or name. A web address is refused."
},
"alt": {
"type": "string",
"maxLength": 120,
"title": "Alt text",
"description": "What the picture shows, for anyone who cannot see it."
}
},
"required": [
"url"
],
"additionalProperties": false,
"title": "Map",
"description": "An aerial picture or a map of the area, any shape, with its description as alt text. Each place's pin stands on it where you put it."
},
"places": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 32,
"title": "Name",
"description": "The place's name, such as Larkspur Park or Parkside Primary School."
},
"kind": {
"type": "string",
"enum": [
"school",
"shop",
"station",
"park",
"cafe",
"doctor",
"gym",
"beach",
"other"
],
"title": "Kind",
"description": "What kind of place it is, drawn as an icon in its pin and on its card. Left out, a plain pin.",
"enumNames": [
"School",
"Shop",
"Station",
"Park",
"Cafe",
"Doctor",
"Gym",
"Beach",
"Other"
]
},
"distance": {
"type": "string",
"maxLength": 16,
"title": "Distance",
"description": "How far it is, as you write it, such as 4 min walk or 1.2 km."
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 1,
"title": "Across",
"description": "Where the pin stands across the map, from 0 at its left edge to 1 at its right edge."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 1,
"title": "Down",
"description": "Where the pin stands down the map, from 0 at its top edge to 1 at its foot."
}
},
"required": [
"name",
"x",
"y"
],
"additionalProperties": false,
"title": "Place"
},
"minItems": 2,
"maxItems": 6,
"title": "Places",
"description": "Two to six places near the home, in the order they are shown, each a pin on the map and a card beside it. Each adds a little over two seconds."
},
"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."
},
"brokerage": {
"type": "string",
"maxLength": 60,
"title": "Brokerage",
"description": "Your licensed brokerage name, set prominently in the header on every frame."
},
"disclosure": {
"type": "string",
"maxLength": 300,
"title": "Disclosure",
"description": "The licence and the statements the law asks for, shown above your footer line from the first frame to the last. 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, calm, softly rounded, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the status ribbon, the area, the headline, the map with its places, the call to action, the brokerage and the disclosure."
},
"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_abd904ec6309?variant=Neighbourhood%20guide&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": {
"status": "Neighbourhood guide",
"area": "Larkspur Hill",
"headline": "Everything a family needs, a short walk away",
"map": {
"alt": "Hills and a lake under a changing sky",
"url": "media://example-image-with-animation.svg"
},
"places": [
{
"x": 0.78,
"y": 0.42,
"kind": "park",
"name": "Larkspur Park",
"distance": "6 min walk"
},
{
"x": 0.26,
"y": 0.62,
"kind": "school",
"name": "Parkside Primary School",
"distance": "5 min walk"
},
{
"x": 0.45,
"y": 0.48,
"kind": "cafe",
"name": "The Corner Bakery",
"distance": "3 min walk"
},
{
"x": 0.62,
"y": 0.7,
"kind": "station",
"name": "Larkspur Hill Station",
"distance": "8 min walk"
}
],
"cta": {
"label": "See homes in Larkspur Hill",
"detail": "+44 20 7946 0321"
},
"brokerage": "Larkspur Realty Ltd",
"disclosure": "Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"look": {
"logo": "auto",
"pace": "calm",
"align": "start",
"theme": "brand",
"corners": "soft",
"logoSize": "auto"
}
},
"metaData": {
"title": "Living in Larkspur Hill: everything a family needs, a short walk away",
"captionTiny": "Living in Larkspur Hill: the park, a primary school, a bakery and the station, all within eight minutes on foot.",
"captionShort": "Thinking of moving to Larkspur Hill? Here is what is on your doorstep: Larkspur Park six minutes away, Parkside Primary School five, The Corner Bakery three and the station eight, all on foot. Ask us about the homes for sale here.",
"captionMedium": "Thinking of moving to Larkspur Hill? Here is what is on your doorstep. Larkspur Park, with its lake and its playground, is six minutes' walk away; Parkside Primary School five; The Corner Bakery, for the morning coffee, three; and Larkspur Hill Station, with trains into town every ten minutes, eight. It is one of the most walkable corners of the city, and family homes here rarely stay on the market for long. Ask us about the homes for sale in Larkspur Hill. Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"captionLong": "Thinking of moving to Larkspur Hill? Here is what is on your doorstep, all on foot. Larkspur Park, with its lake, its playground and a running loop under the trees, is six minutes away. Parkside Primary School, rated outstanding at its last inspection, is five. The Corner Bakery, for the morning coffee and the weekend croissants, is three. And Larkspur Hill Station, with trains into town every ten minutes, is eight. It is one of the most walkable corners of the city, with quiet streets, mature trees and a real village feel, and family homes here rarely stay on the market for long. Whether you are buying or thinking of selling, our team knows every street: call us or message Sophie Laurent to see the homes for sale in Larkspur Hill. Larkspur Realty Ltd, licence 0612345. Equal housing opportunity.",
"hashtags": [
"neighbourhoodguide",
"realestate",
"larkspurhill",
"familyhome",
"movinghome"
]
}
}
}

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.