Juniper Books · Analysis workspace

Holiday email analysis

Send plan

Send and rate sliders

Populate with Juniper Books data

PlannedSend[] { date: string (YYYY-MM-DD), name: string, channel: "email", recipients: number, approximate: boolean, low: number | null, high: number | null, status: "sent" | "projected", note: string } ListrakMessage[] { list: string, messageType: string (broadcast | triggered), channel: string (Email | SMS), campaign: string, name: string, sendDate: string, spanStart: string (YYYY-MM-DD), spanEnd: string (YYYY-MM-DD), revenueCents: number, sends: number, opens: number, clicks: number, uniqueClicks: number, conversions: number, aovCents: number }

November, December, and combined totals

Populate with Juniper Books data

PlannedSend[] { date: string (YYYY-MM-DD), name: string, channel: "email", recipients: number, approximate: boolean, low: number | null, high: number | null, status: "sent" | "projected", note: string } ListrakMessage[] { list: string, messageType: string (broadcast | triggered), channel: string (Email | SMS), campaign: string, name: string, sendDate: string, spanStart: string (YYYY-MM-DD), spanEnd: string (YYYY-MM-DD), revenueCents: number, sends: number, opens: number, clicks: number, uniqueClicks: number, conversions: number, aovCents: number }

Campaign and flow breakdown

Populate with Juniper Books data

ListrakMessage[] { list: string, messageType: string (broadcast | triggered), channel: string (Email | SMS), campaign: string, name: string, sendDate: string, spanStart: string (YYYY-MM-DD), spanEnd: string (YYYY-MM-DD), revenueCents: number, sends: number, opens: number, clicks: number, uniqueClicks: number, conversions: number, aovCents: number } promoBlastNames: string[] (exact message names counted as campaigns when triggered and at least promoBlastMinSends: number) excludedNameParts: string[] (fragments matched against list, campaign, and message name) welcomeSeriesNames: string[] (exact triggered-message names in the welcome series) primaryListName: string (the main audience list; other lists are the remainder)

Daily planned sends table

Populate with Juniper Books data

PlannedSend[] { date: string (YYYY-MM-DD), name: string, channel: "email", recipients: number, approximate: boolean, low: number | null, high: number | null, status: "sent" | "projected", note: string }