Florists design lookbooks in Canva because its image editing is excellent. These mockups show the import flow (Option 3): the lookbook's pages are pulled in via Canva's API and become ordinary full-bleed custom pages — already supported by Custom Pages v1 — so the client sees one seamless, white-labelled document on web and in the PDF.
Canva is involved exactly twice — once to connect, once per import. Everything the client ever sees is served by BloomBoard.
A one-time connection, following the Email settings connect-card pattern. Both states shown.
?connected= banner, same as email."Import from Canva" lives in the existing custom-page add menu, next to blank pages and starter layouts. No new surface to learn.
Modelled directly on the Pinterest import modal: same head/body/foot rhythm, same selection language. The grid lists the florist's own Canva designs, newest first.
Choose a design — we'll bring its pages into this proposal.
All pages start selected — the common case is "bring the whole lookbook". Placement reuses the custom-page anchor model.
7 of 8 pages selected · tap a page to leave it out.
after_section and document_end in the existing custom-pages schema. Pages can still be dragged anywhere afterwards.Exporting pages from Canva at print quality.
Imported pages behave exactly like hand-built custom pages. The only Canva-specific affordance is the refresh nudge on drafts when the source design has been edited since import.
updated_at against our import timestamp on studio load. No webhook exists for this, so it's checked when the studio opens — not pushed. Refresh replaces the page images in place, keeping order and anchors. Sent proposals are snapshots and never change.Nothing to learn here — and that's the point. Lookbook pages sit inside the document on the web view and in the PDF, indistinguishable from native pages.
If we ever want the live-updating version instead, it looks like this: a link card on the proposal page that opens Canva's viewer. Always current, but it leaves the branded experience, requires the design to be public, and never appears in the PDF. Not the recommended v1.
Things to settle before implementation — none block the design above.
MAX_CUSTOM_PAGES = 12 in template_studio/services/custom_pages.py. Canva lookbooks routinely run longer. Image-background pages are cheap to render, so the cap is policy, not performance — but raising it needs a quick check against the PDF measure loop.design:meta:read, design:content:read, profile:read only.