> ## 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.

# EmailTemplateProductsSectionInput

> Products block. Omit a field to keep the merchant default on insert, or the saved value on update. Not a column child.

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

  <Expandable title="fields" lazyRender>
    <ResponseField name="buttonLink" type="String">
      Optional fixed URL.
    </ResponseField>

    <ResponseField name="buttonText" type="String">
      Label shown on the button.
    </ResponseField>

    <ResponseField name="cornerRadius" type="Int">
      Corner radius in pixels.
    </ResponseField>

    <ResponseField name="fillColor" type="String">
      Button fill color.
    </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="fontSize" type="Int">
      Label font size in pixels.
    </ResponseField>

    <ResponseField name="fullWidth" type="Boolean">
      Whether the button stretches to the card width.
    </ResponseField>

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

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

      <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="strokeColor" type="String">
      Button border color.
    </ResponseField>

    <ResponseField name="strokeWeight" type="Int">
      Border width in pixels.
    </ResponseField>

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

<ResponseField name="columnCount" type="Int">
  How many products sit in a row when layout is columns. 1 to 4.
</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 when the layout is columns.
</ResponseField>

<ResponseField name="imageAspectRatio" type="Float">
  Width divided by height. Omit to keep the stored value.
</ResponseField>

<ResponseField name="imageCornerRadius" type="Int">
  Image corner radius in pixels.
</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="imageSize" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-image-size">EmailTemplateImageSize</a>}>
  Image size when the layout is rows.
</ResponseField>

<ResponseField name="layoutType" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-cart-layout-type">EmailTemplateCartLayoutType</a>}>
  Rows or columns.
</ResponseField>

<ResponseField name="lineItemButtons" type={<a href="/docs/api-reference/v3/reference/marketing/email-template-inline-button-input">EmailTemplateInlineButtonInput</a>}>
  Button on each product.

  <Expandable title="fields" lazyRender>
    <ResponseField name="buttonLink" type="String">
      Optional fixed URL.
    </ResponseField>

    <ResponseField name="buttonText" type="String">
      Label shown on the button.
    </ResponseField>

    <ResponseField name="cornerRadius" type="Int">
      Corner radius in pixels.
    </ResponseField>

    <ResponseField name="fillColor" type="String">
      Button fill color.
    </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="fontSize" type="Int">
      Label font size in pixels.
    </ResponseField>

    <ResponseField name="fullWidth" type="Boolean">
      Whether the button stretches to the card width.
    </ResponseField>

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

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

      <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="strokeColor" type="String">
      Button border color.
    </ResponseField>

    <ResponseField name="strokeWeight" type="Int">
      Border width in pixels.
    </ResponseField>

    <ResponseField name="textColor" type="String">
      Label color.
    </ResponseField>
  </Expandable>
</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="numberOfProducts" type="Int">
  How many dynamic products to show. 1 to 10.
</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="recommendedProductFilterId" type="ID">
  Saved product filter id, or 00000000feedb10cfeedb10c for products this trigger already carries. Omit to leave it unchanged.
</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="showButton" type="Boolean">
  Show the per-product button.
</ResponseField>

<ResponseField name="showCheckoutButton" type="Boolean">
  Show the checkout button.
</ResponseField>

<ResponseField name="showImage" type="Boolean">
  Show product images.
</ResponseField>

<ResponseField name="showPrice" type="Boolean">
  Show prices.
</ResponseField>

<ResponseField name="showQuantity" type="Boolean">
  Show quantity.
</ResponseField>

<ResponseField name="showTitle" type="Boolean">
  Show product titles.
</ResponseField>

<ResponseField name="stackOnMobile" type="Boolean">
  Stack columns on a narrow screen.
</ResponseField>

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

<ResponseField name="titleFontSize" type="Int">
  Title font size in pixels.
</ResponseField>


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