element field: welcome_email_subject, pricing_hero, paywall. Every decide and declare call names exactly one element, and every decision is made for one.
One element or two
The element is the unit of optimization: Curious chooses one arm for it, holistically. If an email’s subject and body should be optimized together, that is one element whose content has two fields, and every variant is a subject and a body that belong together. If they should be optimized independently, they are two elements, each with its own experiment.Naming
Names are strings of your choosing, matched exactly. Name the surface, not the experiment:pricing_hero, not pricing_hero_test_2. The name is how your code and the dashboard refer to the same thing for as long as the content exists, across every experiment Curious runs on it.
element_type
An optional element_type tells Curious what kind of content it is writing, so it brings the right craft knowledge to variant generation: what a push notification can carry, how an email subject earns an open, what a paywall must say. The values are:
push_notification, email_subject, email_preview, email_body, email, button_cta, hero, landing_page, blog_post, paywall
Case does not matter on input. Any other value is a 400 naming the allowed set. The type never constrains the content’s shape; a provided control is the ground truth about what your renderer displays. Changing the type updates the element in place and shapes future variants without restarting anything.