> ## Documentation Index
> Fetch the complete documentation index at: https://developers.redo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# EmailTemplateShoppableProductsSectionInput

> Shoppable products block. Omit a field to keep the merchant default on insert, or the saved value on update. Not a column child. Cannot use the trigger-products sentinel.

<ResponseField name="cardCornerRadiusPx" type="Int">
  Card corner radius in pixels.
</ResponseField>

<ResponseField name="checkoutButton" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-email-button-input">EmailTemplateBrandKitEmailButtonInput</a>}>
  Checkout button.

  <Expandable title="fields" lazyRender>
    <ResponseField name="fullWidth" type="Boolean">
      Stretch to content width.
    </ResponseField>

    <ResponseField name="hierarchy" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-button-hierarchy">EmailTemplateButtonHierarchy</a>}>
      Primary, secondary, or tertiary.
    </ResponseField>

    <ResponseField name="override" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-button-override-input">EmailTemplateBrandKitButtonOverrideInput</a>}>
      Style override.

      <Expandable title="fields" lazyRender>
        <ResponseField name="backgroundColor" type="String">
          Fill color.
        </ResponseField>

        <ResponseField name="border" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-button-border-input">EmailTemplateBrandKitButtonBorderInput</a>}>
          Border.
        </ResponseField>

        <ResponseField name="enabled" type="Boolean">
          Apply override styles.
        </ResponseField>

        <ResponseField name="font" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-font-input">EmailTemplateBrandKitFontInput</a>}>
          Label font.
        </ResponseField>

        <ResponseField name="paddingPx" type="Int">
          Inner padding.
        </ResponseField>

        <ResponseField name="textColor" type="String">
          Label color.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="text" type="String">
      Button label.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="fontFamily" type="String">
  One of the email builder's fonts (Arial, Courier New, Georgia, Lucida Sans Unicode, Tahoma, Times New Roman, Trebuchet MS, Verdana, Nunito, Poppins, Raleway, Inter, Pacifico) or a font from the store's brand kit. A single name gets a fallback of the same kind; a comma-separated list is used as written.
</ResponseField>

<ResponseField name="horizontalAlignment" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-alignment">EmailTemplateAlignment</a>}>
  Card alignment.
</ResponseField>

<ResponseField name="imageAspectRatio" type="Float">
  Width divided by height.
</ResponseField>

<ResponseField name="imageObjectFit" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-object-fit">EmailTemplateObjectFit</a>}>
  How the image fills its box.
</ResponseField>

<ResponseField name="manuallySelectedProducts" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-manual-product-input">[EmailTemplateManualProductInput!]</a>}>
  Products used when productSelectionType is MANUAL.

  <Expandable title="fields" lazyRender>
    <ResponseField name="productId" type="String!" required>
      Store product id.
    </ResponseField>

    <ResponseField name="variantId" type="String!" required>
      Store variant id.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="numberOfDynamicProducts" type="Int">
  How many dynamic products to show. 1 to 10.
</ResponseField>

<ResponseField name="productButtons" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-email-button-input">EmailTemplateBrandKitEmailButtonInput</a>}>
  Button on each product.

  <Expandable title="fields" lazyRender>
    <ResponseField name="fullWidth" type="Boolean">
      Stretch to content width.
    </ResponseField>

    <ResponseField name="hierarchy" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-button-hierarchy">EmailTemplateButtonHierarchy</a>}>
      Primary, secondary, or tertiary.
    </ResponseField>

    <ResponseField name="override" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-button-override-input">EmailTemplateBrandKitButtonOverrideInput</a>}>
      Style override.

      <Expandable title="fields" lazyRender>
        <ResponseField name="backgroundColor" type="String">
          Fill color.
        </ResponseField>

        <ResponseField name="border" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-button-border-input">EmailTemplateBrandKitButtonBorderInput</a>}>
          Border.
        </ResponseField>

        <ResponseField name="enabled" type="Boolean">
          Apply override styles.
        </ResponseField>

        <ResponseField name="font" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-brand-kit-font-input">EmailTemplateBrandKitFontInput</a>}>
          Label font.
        </ResponseField>

        <ResponseField name="paddingPx" type="Int">
          Inner padding.
        </ResponseField>

        <ResponseField name="textColor" type="String">
          Label color.
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="text" type="String">
      Button label.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="productFilterId" type="ID">
  Saved product filter id. Omit to leave it unchanged.
</ResponseField>

<ResponseField name="productSelectionType" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-product-selection-type">EmailTemplateProductSelectionType</a>}>
  Dynamic recommendations or a hand-picked list.
</ResponseField>

<ResponseField name="provider" type={<a href="/docs/api-reference/v3/reference/marketing/product-filter-provider">ProductFilterProvider</a>}>
  Which of this account's stores the products come from.
</ResponseField>

<ResponseField name="schemaFieldName" type="String">
  Cart Context key. Defaults to cartContext.
</ResponseField>

<ResponseField name="sectionColor" type="String">
  Section background color.
</ResponseField>

<ResponseField name="sectionPadding" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-padding-input">EmailTemplatePaddingInput</a>}>
  Padding around the section.

  <Expandable title="fields" lazyRender>
    <ResponseField name="bottom" type="Int">
      Bottom padding in pixels.
    </ResponseField>

    <ResponseField name="left" type="Int">
      Left padding in pixels.
    </ResponseField>

    <ResponseField name="right" type="Int">
      Right padding in pixels.
    </ResponseField>

    <ResponseField name="top" type="Int">
      Top padding in pixels.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="show" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-product-card-content-input">EmailTemplateProductCardContentInput</a>}>
  Which parts of each card are visible.

  <Expandable title="fields" lazyRender>
    <ResponseField name="button" type="Boolean">
      Show the product button.
    </ResponseField>

    <ResponseField name="description" type="Boolean">
      Show the description.
    </ResponseField>

    <ResponseField name="image" type="Boolean">
      Show the product image.
    </ResponseField>

    <ResponseField name="price" type="Boolean">
      Show the price.
    </ResponseField>

    <ResponseField name="title" type="Boolean">
      Show the product title.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="size" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-shoppable-products-size">EmailTemplateShoppableProductsSize</a>}>
  Card size.
</ResponseField>

<ResponseField name="textColor" type="String">
  Text color.
</ResponseField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.