Pharmacies (Pharmacy groups and cooperatives), Member pharmacies 1.0.0
| Template | Pharmacies (Pharmacy groups and cooperatives), tpl_582d4bae23ad |
|---|---|
| Variant | Member pharmacies |
| Version | 1.0.0, the newest: what a channel following this variant draws |
| Shapes | 9x16, 4x5, 1x1, 16x9, 2x3 |
| Length | 17 seconds |
Example video
The 1x1 cut of this version, drawn from its own worked example. Open the video on its own.
What it accepts
Member pharmacies near you in a Bauhaus look: the town in the circle, the headline and a line about it, complete on the first frame; then a map with a numbered pin for each of up to eight pharmacies, each read in turn on a card with its name and address, the button and the pharmacist. Optional mandatory text at the foot. 1.3 seconds more per pharmacy. metaData is never drawn.
| Field | Type | Required | Limit | What it is |
|---|---|---|---|---|
clipData | group | yes | Clip data: Everything drawn in the clip: the campaign, the headline, the line about it, the town, the map, each pharmacy's name, address and line under it, the label, the call to action and the mandatory text. | |
clipData.campaign | text | yes | up to 40 characters | Campaign: What this post is, over the headline beside a square of your colour, such as Member pharmacies or Find a pharmacy near you. |
clipData.headline | text | yes | up to 64 characters | Headline: The headline of the cover, such as Your Lindenhof pharmacy, close by. |
clipData.intro | text | up to 160 characters | About it: A sentence under the headline. | |
clipData.town | text | up to 16 characters | Town: The word in the circle, such as the town or the district the pharmacies are in. Short words fill the circle best. | |
clipData.map | image | yes | media:// file from the media library, alt text up to 120 characters | Map: A picture of the map the pharmacies are pinned on, shown whole, any shape. Each pharmacy's pin stands where its Across and Down say. |
clipData.pharmacies | list | yes | at least 1, up to 8 | Pharmacies: One to eight member pharmacies, each a numbered pin on the map and, read in turn, a card with its name and address; about one and a third seconds each. |
clipData.pharmacies[] | group | Pharmacy | ||
clipData.pharmacies[].name | text | yes | up to 48 characters | Name: The pharmacy's name. |
clipData.pharmacies[].address | text | yes | up to 64 characters | Address: Its street and number, and the town where it helps. |
clipData.pharmacies[].detail | text | up to 48 characters | Line under it: One line more, such as its opening hours or a service it is known for. | |
clipData.pharmacies[].x | number | yes | from 0, to 100, 1 decimals | Across: Where the pharmacy is on the map, from the map's left edge (0) to its right edge (100), whatever the language. |
clipData.pharmacies[].y | number | yes | from 0, to 100, 1 decimals | Down: Where the pharmacy is on the map, from the map's top edge (0) to its bottom edge (100). |
clipData.labels | group | Labels: The words over the map, in your language. A label left out is not drawn. | ||
clipData.labels.map | text | up to 40 characters | Map: Over the map and the pharmacy being read. | |
clipData.cta | group | Call to action: The button at the end and the line under it, such as a web address, the app 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: A web address, the app, a phone number. | |
clipData.mandatory | text | up to 320 characters | Mandatory text: The mandatory text your country's law asks for wherever a medicine is named or shown, such as "Always read the label." in the UK or the Pflichttext in Germany. Shown whole at the foot of every frame, set smaller and then on more lines, never cut. Leave it out only where no medicine is named. | |
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, the standard pace, 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": {
"campaign": {
"type": "string",
"maxLength": 40,
"title": "Campaign",
"description": "What this post is, over the headline beside a square of your colour, such as Member pharmacies or Find a pharmacy near you."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "The headline of the cover, such as Your Lindenhof pharmacy, close by."
},
"intro": {
"type": "string",
"maxLength": 160,
"title": "About it",
"description": "A sentence under the headline."
},
"town": {
"type": "string",
"maxLength": 16,
"title": "Town",
"description": "The word in the circle, such as the town or the district the pharmacies are in. Short words fill the circle best."
},
"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": "A picture of the map the pharmacies are pinned on, shown whole, any shape. Each pharmacy's pin stands where its Across and Down say."
},
"pharmacies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 48,
"title": "Name",
"description": "The pharmacy's name."
},
"address": {
"type": "string",
"maxLength": 64,
"title": "Address",
"description": "Its street and number, and the town where it helps."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "One line more, such as its opening hours or a service it is known for."
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "Across",
"description": "Where the pharmacy is on the map, from the map's left edge (0) to its right edge (100), whatever the language."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "Down",
"description": "Where the pharmacy is on the map, from the map's top edge (0) to its bottom edge (100)."
}
},
"required": [
"name",
"address",
"x",
"y"
],
"additionalProperties": false,
"title": "Pharmacy"
},
"minItems": 1,
"maxItems": 8,
"title": "Pharmacies",
"description": "One to eight member pharmacies, each a numbered pin on the map and, read in turn, a card with its name and address; about one and a third seconds each."
},
"labels": {
"type": "object",
"properties": {
"map": {
"type": "string",
"maxLength": 40,
"title": "Map",
"description": "Over the map and the pharmacy being read."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words over the map, in your language. A label left out is not drawn."
},
"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": "A web address, the 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, the app or a phone number."
},
"mandatory": {
"type": "string",
"maxLength": 320,
"title": "Mandatory text",
"description": "The mandatory text your country's law asks for wherever a medicine is named or shown, such as \"Always read the label.\" in the UK or the Pflichttext in Germany. Shown whole at the foot of every frame, set smaller and then on more lines, never cut. Leave it out only where no medicine is named."
},
"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, the standard pace, square corners, text at the start."
}
},
"required": [
"campaign",
"headline",
"map",
"pharmacies"
],
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the campaign, the headline, the line about it, the town, the map, each pharmacy's name, address and line under it, the label, the call to action and the mandatory 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": {
"campaign": {
"type": "string",
"maxLength": 40,
"title": "Campaign",
"description": "What this post is, over the headline beside a square of your colour, such as Member pharmacies or Find a pharmacy near you."
},
"headline": {
"type": "string",
"maxLength": 64,
"title": "Headline",
"description": "The headline of the cover, such as Your Lindenhof pharmacy, close by."
},
"intro": {
"type": "string",
"maxLength": 160,
"title": "About it",
"description": "A sentence under the headline."
},
"town": {
"type": "string",
"maxLength": 16,
"title": "Town",
"description": "The word in the circle, such as the town or the district the pharmacies are in. Short words fill the circle best."
},
"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": "A picture of the map the pharmacies are pinned on, shown whole, any shape. Each pharmacy's pin stands where its Across and Down say."
},
"pharmacies": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 48,
"title": "Name",
"description": "The pharmacy's name."
},
"address": {
"type": "string",
"maxLength": 64,
"title": "Address",
"description": "Its street and number, and the town where it helps."
},
"detail": {
"type": "string",
"maxLength": 48,
"title": "Line under it",
"description": "One line more, such as its opening hours or a service it is known for."
},
"x": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "Across",
"description": "Where the pharmacy is on the map, from the map's left edge (0) to its right edge (100), whatever the language."
},
"y": {
"type": "number",
"minimum": 0,
"maximum": 100,
"title": "Down",
"description": "Where the pharmacy is on the map, from the map's top edge (0) to its bottom edge (100)."
}
},
"required": [
"name",
"address",
"x",
"y"
],
"additionalProperties": false,
"title": "Pharmacy"
},
"minItems": 1,
"maxItems": 8,
"title": "Pharmacies",
"description": "One to eight member pharmacies, each a numbered pin on the map and, read in turn, a card with its name and address; about one and a third seconds each."
},
"labels": {
"type": "object",
"properties": {
"map": {
"type": "string",
"maxLength": 40,
"title": "Map",
"description": "Over the map and the pharmacy being read."
}
},
"additionalProperties": false,
"title": "Labels",
"description": "The words over the map, in your language. A label left out is not drawn."
},
"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": "A web address, the 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, the app or a phone number."
},
"mandatory": {
"type": "string",
"maxLength": 320,
"title": "Mandatory text",
"description": "The mandatory text your country's law asks for wherever a medicine is named or shown, such as \"Always read the label.\" in the UK or the Pflichttext in Germany. Shown whole at the foot of every frame, set smaller and then on more lines, never cut. Leave it out only where no medicine is named."
},
"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, the standard pace, square corners, text at the start."
}
},
"additionalProperties": false,
"title": "Clip data",
"description": "Everything drawn in the clip: the campaign, the headline, the line about it, the town, the map, each pharmacy's name, address and line under it, the label, the call to action and the mandatory 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_582d4bae23ad?variant=Member%20pharmacies&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": {
"campaign": "Member pharmacies near you",
"headline": "Your Lindenhof pharmacy, close by",
"intro": "Eight member pharmacies in Munich, with advice from a pharmacist every day.",
"town": "Munich",
"map": {
"alt": "A map of the town centre",
"url": "media://example-image.jpg"
},
"pharmacies": [
{
"x": 28,
"y": 36,
"name": "Apotheke am Markt",
"detail": "Open until 20:00",
"address": "Marktplatz 4, 80331 Munich"
},
{
"x": 62,
"y": 62,
"name": "Bahnhof-Apotheke",
"detail": "Open until 22:00",
"address": "Bahnhofstrasse 12, 80335 Munich"
}
],
"labels": {
"map": "Find your pharmacy"
},
"cta": {
"label": "Find your pharmacy",
"detail": "lindenhof-apotheken.example"
},
"mandatory": "Always read the label. Ask your pharmacist for advice.",
"look": {
"logo": "auto",
"pace": "standard",
"align": "start",
"theme": "brand",
"corners": "square",
"logoSize": "auto"
}
},
"metaData": {
"title": "Your Lindenhof pharmacy, close by: eight pharmacies in Munich",
"captionTiny": "Your Lindenhof pharmacy, close by: eight member pharmacies in Munich, with advice from a pharmacist every day.",
"captionShort": "Your Lindenhof pharmacy, close by. Eight member pharmacies in Munich, with advice from a pharmacist every day: Apotheke am Markt, Bahnhof-Apotheke and six more, all on the map. Find your pharmacy at lindenhof-apotheken.example.",
"captionMedium": "Your Lindenhof pharmacy, close by. Eight member pharmacies in Munich are open to you with advice from a pharmacist every day, from Apotheke am Markt on the Marktplatz to Bahnhof-Apotheke, open until 22:00. Every address and opening hour is on the map. Find your pharmacy at lindenhof-apotheken.example. Always read the label. Ask your pharmacist for advice.",
"captionLong": "Your Lindenhof pharmacy, close by. Eight member pharmacies in Munich are open to you with advice from a pharmacist every day. Whether you need a prescription filled on your way to work, a few minutes of advice about a cold, or somebody who knows your medicines by name, one of our members is a short walk away: Apotheke am Markt on the Marktplatz, Bahnhof-Apotheke by the station, open until 22:00, and six more in between. Every address and opening hour is on the map, and the pharmacist at each counter is a member of the Lindenhof cooperative, with the same standards in every shop. Find your pharmacy at lindenhof-apotheken.example. Always read the label. Ask your pharmacist for advice.",
"hashtags": [
"pharmacy",
"apotheke",
"munich",
"healthcare",
"findapharmacy"
]
}
}
}
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.